AS3:覆盖Image类,修改指定图片skin、

用处:换皮肤
部分代码:(对比原来Image类,下面代码是添加进去的)
_imgs:保存所有图片
_skinId:皮肤id
img.skin = img.skin:设置皮肤时候,重新设置一下所有图片路径
imgs.push(this):创建一个图片对象,需要添加进来
value = value.substr(0,index)+"/sn"+skinId + value.substr(index+4):修改指定图片的路径
比如:第一套皮肤的图片命名sn1
;第二套皮肤的图片命名sn2

        private static var _imgs:Array = [];
        private static var _skinId:String = "1";
        public static function setSkinId(id:String):void{
            _skinId = id;
            
            var img:Image;
            for(var i:int = _imgs.length-1;i>=0;i--){
                img = _imgs[i];
                if(img.destroyed){
                    _imgs.splice(i,1);
                    continue;
                }
                img.skin = img.skin;
            }
        }

       /**
         * 创建一个 Image 实例。
         * @param skin 皮肤资源地址。
         */
        public function Image(skin:String = null) {
            _imgs.push(this);
            this.skin = skin;
        }

        public function set skin(value:String):void {
            if(value != null){
                var index:int = value.indexOf("/sn");
                if(index > 0){
                    value = value.substr(0,index)+"/sn"+_skinId + value.substr(index+4);
                }
                
            }
            if (_skin != value) {
                _skin = value;
                if (value) {
                    var source:Texture = Loader.getRes(value);
                    if (source) {
                        this.source = source;
                        onCompResize();
                    } else Laya.loader.load(_skin, Handler.create(this, setSource, [_skin]), null, Loader.IMAGE,1,true,_group);
                } else {
                    this.source = null;
                }
            }
        }

修改皮肤代码:

Image.setSkinId(1);
//Image.setSkinId(2);

你可能感兴趣的:(AS3:覆盖Image类,修改指定图片skin、)