欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CocosCreator知识库<三>关于CocosCreator中更换图片的三种方式_通用方式_"当前"尺寸_"原有"尺寸

程序员文章站 2022-05-12 23:08:23
...

CocosCreator知识库<三>关于CocosCreator中更换图片的三种方式<26/12/2017>

首先,准备两张图,建立resources文件夹并且将该两张图放入该文件夹下,拖其中一张图至Canvas下并且挂上我们唯一的脚本.

通用方法:(其实也就是方法二)

//*************<通用方法>**************//
this.getComponent(cc.Sprite).spriteFrame =this.birdSprite;

示例脚本:

cc.Class({
    extends: cc.Component,

    properties: {
        open: true,
        texturePut: 0,

        birdSprite: cc.SpriteFrame,
        cocosSprite: cc.SpriteFrame,
    },

    update: function (dt) { //每过0.3秒切换一张图片
        if (this.open) {
            this.open = false;
            if (this.texturePut == 0) {
                this.scheduleOnce(function () {
                    this.texturePut = 1;
                    this.open = true;


                    //*************<通用方法>**************//
                    this.getComponent(cc.Sprite).spriteFrame = this.birdSprite;

                }, 0.3);
            } else {
                this.scheduleOnce(function () {
                    this.texturePut = 0;
                    this.open = true;


                    //*************<通用方法>**************//
                    this.getComponent(cc.Sprite).spriteFrame = this.cocosSprite;


                }, 0.3);
            }
        }
    },
});


创建一个SpriteFrame的类型的

//************************************核心代码*************************************//
//*************<方法一>**************//
//路径一定要放在资源管理器的绝对路径下,不然会一直报错说在resources文件下找不到
var realUrl =cc.url.raw('resources/2.png');
var texture =cc.textureCache.addImage(realUrl);
this.getComponent(cc.Sprite).spriteFrame.setTexture(texture);

//*************<方法二>**************//
cc.loader.loadRes("2",cc.SpriteFrame,function (err,spriteFrame) {
self.node.getComponent(cc.Sprite).spriteFrame = spriteFrame;
});

<方法一>演示效果:("当前"尺寸,更换进来的图片会进行缩放)

CocosCreator知识库&lt;三&gt;关于CocosCreator中更换图片的三种方式_通用方式_&quot;当前&quot;尺寸_&quot;原有&quot;尺寸

奉上方法一唯一脚本:(这个脚本挂图上)

cc.Class({
    extends: cc.Component,

    properties: {
        open: true,
        texturePut: 0
    },

    update: function (dt) { //每过0.3秒切换一张图片
        if (this.open) {
            this.open = false;
            if (this.texturePut == 0) {
                this.scheduleOnce(function () {
                    this.texturePut = 1;
                    this.open = true;


                    //*************<方法一>**************//
                    //路径一定要放在资源管理器的绝对路径下,不然会一直报错说在resources文件下找不到(不知原因)
                    var realUrl = cc.url.raw('resources/2.png');
                    var texture = cc.textureCache.addImage(realUrl);
                    this.getComponent(cc.Sprite).spriteFrame.setTexture(texture);


                }, 0.3);
            } else {
                this.scheduleOnce(function () {
                    this.texturePut = 0;
                    this.open = true;


                    //*************<方法一>**************//
                    //路径一定要放在资源管理器的绝对路径下,不然会一直报错说在resources文件下找不到(不知原因)
                    var realUrl = cc.url.raw('resources/1.png');
                    var texture = cc.textureCache.addImage(realUrl);
                    this.getComponent(cc.Sprite).spriteFrame.setTexture(texture);


                }, 0.3);
            }
        }
    },
});

<方法二>演示效果:("原有"尺寸,按照原有尺寸替换,不进行缩放)

CocosCreator知识库&lt;三&gt;关于CocosCreator中更换图片的三种方式_通用方式_&quot;当前&quot;尺寸_&quot;原有&quot;尺寸

奉上方法二唯一脚本:(脚本挂图片上)

cc.Class({
    extends: cc.Component,

    properties: {
        open: true,
        texturePut: 0
    },

    update: function (dt) { //每过0.3秒切换一张图片
        if (this.open) {
            this.open = false;
            if (this.texturePut == 0) {
                this.scheduleOnce(function () {
                    this.texturePut = 1;
                    this.open = true;


                    //*************<方法二>**************//
                    // 加载 SpriteFrame
                    var self = this;
                    cc.loader.loadRes("2", cc.SpriteFrame, function (err, spriteFrame) { //这个方法
                        self.node.getComponent(cc.Sprite).spriteFrame = spriteFrame;
                    });


                }, 0.3);
            } else {
                this.scheduleOnce(function () {
                    this.texturePut = 0;
                    this.open = true;


                    //*************<方法二>**************//
                    // 加载 SpriteFrame
                    var self = this;
                    cc.loader.loadRes("1", cc.SpriteFrame, function (err, spriteFrame) {
                        self.node.getComponent(cc.Sprite).spriteFrame = spriteFrame;
                    });


                }, 0.3);
            }
        }
    },
});