cocos creator从零开发简单框架(12)-代码生成单色Sprite

在写Panel前,先写个方法生成单色Sprite,这样当碰到需要单色Sprite的时候不需要在编辑器拖拽和代码动态加载资源。

编辑framework/scripts/AppUtil.ts,添加newSpriteNode方法。

// 生成默认白色 100x100 大小 Sprite (单色) 节点
public static newSpriteNode(name: string = 'newSpriteNode'): cc.Node {
    const buffer = Uint8Array.from([255, 255, 255, 255])

    const texture = new cc.Texture2D()
    texture.initWithData(buffer, cc.Texture2D.PixelFormat.RGBA8888, 1, 1)

    const spriteFrame = new cc.SpriteFrame()
    spriteFrame.setTexture(texture)

    const node = new cc.Node(name)
    const sprite = node.addComponent(cc.Sprite)
    sprite.sizeMode = cc.Sprite.SizeMode.CUSTOM
    sprite.spriteFrame = spriteFrame

    node.setContentSize(100, 100)

    return node
}

编辑UIMain界面,创建一个名为BtnNewSpriteNode文本为生成的按钮。

创建按钮

编辑scripts/UIMain.ts,编辑onButtonClick方法。

protected onButtonClick(button: cc.Node) {
    switch (button.name) {
        case 'BtnUIBag':
            UIMgr.open(UIBag)
            break

        case 'BtnNewSpriteNode':
            TopBlock.show()

            const tmpNode = new cc.Node('tmpNode')
            tmpNode.parent = this.skin
            tmpNode.zIndex = 100

            const sprite1 = AppUtil.newSpriteNode()
            sprite1.parent = tmpNode
            sprite1.x = -150

            const sprite2 = AppUtil.newSpriteNode()
            sprite2.parent = tmpNode
            sprite2.color = cc.Color.GREEN

            const sprite3 = cc.instantiate(sprite1)
            sprite3.parent = tmpNode
            sprite3.x = 150
            sprite3.color = cc.Color.RED

            setTimeout(() => {
                TopBlock.hide()
                tmpNode.destroy()
            }, 3000)
            break
    }
}

运行程序,点击生成按钮。

生成Sprite

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!