cocos creator 新人踩坑 (prefad 如何使用, 创建节点, 替换精灵, 加载资源)

cocos create 新人踩坑 (prefad 如何使用, 创建节点, 替换精灵, 加载资源)cocos create 版本 3.1.2 言语javascript用脚本创建节点创建精灵不再像 2dx 一样,每个组件,节点对象等都有一个统一的父节点用编辑器创建一个精灵对象,会自带 Node 和 cc.UITransform , 用 getCompoment(Sprite), 返回当前节点下所有 Sprite 组件。一般 这个精灵对象 Node 只有一个 Sprite用代码创建精灵需要自己先
摘要由CSDN通过智能技术生成

cocos creator 新人踩坑 (prefad 如何使用, 创建节点, 替换精灵, 加载资源)

cocos create 版本 3.1.2 言语 typescript

用脚本创建节点

创建精灵不再像 2dx 一样,每个组件,节点对象等都有一个统一的父节点

用编辑器创建一个精灵对象,会自带 Node 和 cc.UITransform , 用 getCompoment(Sprite), 返回当前节点下所有 Sprite 组件。一般 这个精灵对象 Node 只有一个 Sprite

用代码创建精灵需要自己先创建 Node ,再往 Node 中添加精灵

const node = new Node("New Sprite");
const sprite = node.addComponent(Sprite);
const spriteFrame = new SpriteFrame();
const tex = imageAsset._texture;
spriteFrame.texture = tex;
sprite.spriteFrame = spriteFrame;
node.parent = self.node;

在 已有的节点上替换精灵 SpriteFrame

注意 CellphoneLogin 文件放在

项目/assets/resources/LoginSceneTexture/CellphoneLogin.splist

resources.load 方法找 resources 目录下的文件

import { Sprite, resources } from "cc"
start(){
    // 先获得改精灵的节点
    this.isBearNode = this.loginView!.getChildByName("rememBtn");
}
phoneDoBtnClick(){
    // 再由节点获取 Sprite 组件
	let sprite = this.isBearNode?.getComponent(Sprite);
	let isSel = "Cellphone_shifoujizhu_"
	resources.load("LoginSceneTexture/CellphoneLogin", SpriteAtlas, (err, atlas)=>{
		if(err) return new Error(err);
		let fram =  atlas.getSpriteFrame(isSel + (this.isBear? "sel": "nor"));
		sprite!.spriteFrame = fram;
	})
}

加载远程资源

原有的 cc.loader 已被废弃,加载资源改用 assetManager 或 resources (本地)

assetManager.loadRemote<ImageAsse> ImageAsset 为泛型,约束 typescript 编辑器,调用指定泛型的方法。

可以写 Texture2D,或其他,但对调函数 texture 实参返回 类型为 ImageAsset,写其他的没用

let url = "http://.../logo" 当前http 资源没有 文件后缀时,传入参数定义声明后缀 {ext: ".jpg"}, 带后缀不用加
assetManager.loadRemote<ImageAsset>(url, {ext: ".jpg"}, (err, texture) => {
    if(err) return
    if(texture.loaded){
        let sprite = this.verify?.getComponent(Sprite);
        let sptiteframe = new SpriteFrame();
        sptiteframe.texture = texture._texture
        sprite!.spriteFrame = sptiteframe
    }
});
问题

为什么不能直赋值,非得 new SpriteFrame?

let sprite = this.verify?.getComponent(Sprite);
sprite!.spriteFrame = texture

texture 类型为 ImageAsset,spriteFrame 类型为 spriteFrame 两者类型不一致

sprite 中使用 png图片
方式1 通过编辑器修改 图片属性

sprite 一般用 引用 plist图集&#x

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值