gpt4 book ai didi

actionscript-3 - 单击按钮时如何更改 Sprite 颜色 AS3

转载 作者:行者123 更新时间:2023-12-04 05:17:05 24 4
gpt4 key购买 nike

我有一个 Sprite (圆圈),我用 actionscript 做的。
这是伪代码:

    var board:Sprite = new Sprite();
var spDot:Sprite = new Sprite()
spDot.graphics.lineStyle(1,0x0000CC);
spDot.graphics.beginFill(0xFFFFFF); //white;
spDot.graphics.drawCircle(0,0,dZ);
spDot.graphics.endFill();
spDot.name="v";
board.addChild(spDot);

我有一个按钮“btnA”可以将当前的 Sprite 颜色(白色)更改为黑色。
btnA.addEventListener(MouseEvent.CLICK, changeColor);
function changeColor(evt:MouseEvent){
(board.getChildByName("v") as Sprite).graphics.beginFill(0x000000);
}

但是,我的问题,它在这部分返回了错误: (board.getChildByName("v") as Sprite).graphics.beginFill(0x000000);
其实我只是猜想用 (board.getChildByName("v") as Sprite).graphics.beginFill(0x000000);改变颜色。
你有什么想法吗?谢谢!

最佳答案

这种最简单的方法是清除图形数据并重新绘制到图形对象中。

function drawCircle(sprite:Sprite, radius:Number = 40, fillColor:int = 0):Sprite
{
if (!sprite) return null;

const g:Graphics = sprite.graphics;

g.clear();
g.lineStyle(1, 0x0000CC);
g.beginFill(fillColor);
g.drawCircle(0, 0, radius);
g.endFill();

return sprite;
}

此外,我强烈建议您在需要特定类型时不要使用隐式调用:
function changeColor(evt:MouseEvent)
{
// hides the fact, that you're having an instance of am unexpected type
(board.getChildByName("v") as Sprite).graphics.beginFill(0x000000);
}

尽管您有一个有效的引用,但仍会导致 1009/null 指针。
function changeColor(evt:MouseEvent)
{
// fails fast - for example when you change from sprite to bitmap.
Sprite(board.getChildByName("v")).graphics.beginFill(0x000000);
}

在这种情况下,快速失败是合适的施法方式。

关于actionscript-3 - 单击按钮时如何更改 Sprite 颜色 AS3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14119346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com