cc.ImageView.ClassName = "ImageView" function cc.ImageView:saveToXmlNode(xmlNode) cc.Widget.saveToXmlNode(self , xmlNode); xmlNode.Texture = getUITexture(self:getTextureFile() , self:getImageTexType()); xmlNode.Scale9Enabled = self:isScale9Enabled(); if xmlNode.Scale9Enabled then xmlNode.CapInsets = self:getCapInsets(); local scale9 = tolua.cast(self:getVirtualRenderer() , "cc.Scale9Sprite"); if scale9 then xmlNode.BorderEnabled = scale9:isBorderEnabled(); xmlNode.Border = scale9:getBorder(); end end end function cc.ImageView:loadFromXmlNode(xmlNode) cc.Widget.loadFromXmlNode(self , xmlNode); setUITexture(self.loadTexture , self , xmlNode.Texture); self:setScale9Enabled(xmlNode.Scale9Enabled); if self:isScale9Enabled() then self:setCapInsets(xmlNode.CapInsets); if xmlNode.BorderEnabled then self:setBorderEnabled(true); self:setBorder(xmlNode.Border); end end end function cc.ImageView:extend(node) cc.Widget:extend(node); node:setName("ImageView") end function cc.ImageView:createNode() local layer = cc.ImageView:create(); cc.ImageView:extend(layer); return layer; end -- 设置默认值 function cc.ImageView:setDefaults() self:loadTexture("res/default/image.png"); self:setCapInsets(cc.rect(0,0,0,0)); end function cc.ImageView:loadTextureFromPlist(filename) --如果资源不存在加载将会崩溃 local cache = cc.SpriteFrameCache:getInstance() local spriteFrame = cache:getSpriteFrameByName(filename); if tolua.isnull(spriteFrame) then logD(filename) logD("纹理找不到,崩溃被阻止!") if isWin32Platform() then showTooltip("纹理找不到,崩溃被阻止!") end uploadLogs(GAME_ERROR_TYPE.TEXTURE) return end self:loadTexture(filename, cc.TextureResType.plistType); end --[[ 这个接口的存在,是为了解决以下BUG 如果ImageView之前是通过plist获取纹理, 然后在通过读取单个图片设置纹理,就会显示错乱 解决方法就是在setTexture()之前调用 setDefaults() --]] function cc.ImageView:setTexture2(texture) if not texture then return end self:setDefaults(); self:setTexture(texture) end -- 重新加载这个控件的所有图片 function cc.ImageView:postloadImage() local isScale9 = self:isScale9Enabled(); self:setScale9Enabled(not isScale9); self:setScale9Enabled(isScale9); end -- 收集这个控件用到了哪些PList文件 function cc.ImageView:collectPListFiles() local files = {}; collectPListFile(files , self:getTextureFile() , self:getImageTexType()); function getParent(node, path) local parent = node:getParent() if parent then local nameParent = parent:getName() path = nameParent.. "\\"..path return getParent(parent, path) else return path end end local nodePath = getParent(self, self:getName()); for k,v in pairs(files) do print("plist = " .. v .. ", nodePath = ".. nodePath) end return files; end