Actionscript 3 当按钮被单击时如何更改精灵颜色3
我有一个精灵(圆圈),我用动作脚本制作的。 以下是伪代码:Actionscript 3 当按钮被单击时如何更改精灵颜色3,actionscript-3,flash,Actionscript 3,Flash,我有一个精灵(圆圈),我用动作脚本制作的。 以下是伪代码: 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.gr
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”将当前的精灵颜色(白色)更改为黑色
btnA.addEventListener(MouseEvent.CLICK, changeColor);
function changeColor(evt:MouseEvent){
(board.getChildByName("v") as Sprite).graphics.beginFill(0x000000);
}
但是,我的问题是,它在这部分返回了错误:(board.getChildByName(“v”)作为Sprite)代码>
实际上,我只是猜测使用(board.getChildByName(“v”)作为精灵)代码>更改颜色。
你知道吗?谢谢大家! 最简单的方法是清除图形数据并重新绘制到图形对象中
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);
}
在这种情况下,fast失败是合适的施放方式。我建议不要公开应该着色的显示对象的实现,如果您同意这一说法,您可以使用;)
ColorTransform类用于调整显示对象中的颜色值。颜色调整或颜色变换可应用于所有四个通道:红色、绿色、蓝色和alpha透明度
例子:
@Nicols Siver这个建议只适用于我最初用不透明1填充的颜色。当我在init上使用opacity 0,然后尝试在单击事件上使用beginll和transform填充一些颜色时。它不起作用。有什么解决办法吗??
btnA.addEventListener(MouseEvent.CLICK, buttonDidClick);
function buttonDidClick(e:MouseEvent) {
transformColor(board.getChildByName("v"), 0x000000);
}
function transformColor(target:DisplayObject, color:uint):void {
var colorTransform:ColorTransform = new ColorTransform();
colorTransform.color = color;
target.transform.colorTransform = colorTransform;
}