向大家问好。
我对AS3 (和Flash CS4)非常陌生,我遇到了一个问题。我有一个项目,一个用户用鼠标在一个区域动态地绘制她的签名,然后,在另一个框架上,在签名被绘制之后,他可以通过点击一些按钮来改变签名的颜色,每个按钮都有不同的颜色。
我用这个来捕获另一个帧的签名:
触发捕获事件的按钮
//targetMC MC是将签名复制到的MC函数buttonClick(事件:MouseEvent):void{ capture(drawingBoard_mc,_targetMC);drawGraphics.clear();gotoAndStop(5);};
函数捕获(目标:DisplayObject,_target:MovieClip):void{ var相对:DisplayObject= target.parent;var rect:矩形=target.getBounds(相对);var bitmapData:BitmapData =新BitmapData(rect.width + PIXEL_BUFFER * 2,rect.height + PIXEL_BUFFER * 2);bitmapData.draw(相对,新矩阵( 1,0,0,1,-rect.x + PIXEL_BUFFER,-rect.y + PIXEL_BUFFER));var byteArray:ByteArray;var JPGEncoder:JPGEn编码器=新JPGEncoder(JPG_QUALITY_DEFAULT);byteArray = jpgEncoder.encode(bitmapData);var ldr:Loader = new ();ldr.name = " signature ";ldr.loadBytes(byteArray);//target是目标mc,其中签名将复制到_target.addChild(ldr作为DisplayObject);}
它完美地复制了签名。
问题是在目标5中,我有两个按钮来更改颜色:
//Color 1
line_bt1.buttonMode = true;
line_bt1.mouseChildren = false;
line_bt1.addEventListener(MouseEvent.MOUSE_DOWN, line_bt1Over);
//Color 2
line_bt2.buttonMode = true;
line_bt2.mouseChildren = false;
line_bt2.addEventListener(MouseEvent.MOUSE_DOWN, line_bt2Over);
function line_bt1Over(e:Event){
var myMC:DisplayObject = DisplayObject(_targetMC.getChildByName("signature") as DisplayObject);
changeColor(myMC, 0xCCCCCC);
changeColor(myMC, 0xCCCCCC);
}
function line_bt2Over(e:Event){
var myMC:DisplayObject = DisplayObject(_targetMC.getChildByName("signature") as DisplayObject);
changeColor(myMC, 0x000000);
changeColor(myMC, 0x000000);
}
function changeColor(object:DisplayObject, color:Number){
var colorchange:ColorTransform = new ColorTransform();
colorchange.color = color;
object.transform.colorTransform = colorchange;
}我的问题是_targetMC和签名子都会改变颜色,我只想要子/签名。:(
我使用var myMC:DisplayObject = DisplayObject(_targetMC.getChildByName("signature") as DisplayObject);访问签名子程序,但是容器mc (_targetMC)也会更改颜色.我做错什么了?
提前谢谢。
发布于 2011-02-15 18:53:56
changeColor的一个调用应该足够了。colorTransform:函数changeColor(object: DisplayObject,color:Number){ var颜色转换: object.transform.colorTransform;colorchange.color = color;object.transform.colorTransform =color;}
var myMC:DisplayObject =_targetMC.getChildByName(“签名”);// getChildByName总是返回一个DisplayObject
和
var ldr: DisplayObject
colorChange函数。一定有别的地方不对劲。我不能完全确定,但我想您的问题要么与所有目标(_mc)对象的混淆有关:- parameter "target" of function "capture"
- parameter "\_target" of function "capture"
- member variable "\_targetMC"或者,这可能与每次调用_targetMC时向同一个capture()添加一个名为“签名”的新加载器有关,但永远不要删除旧的加载程序:在第二次单击之后,将出现多个带有“签名”的剪辑,这可能会导致问题。
https://stackoverflow.com/questions/5007747
复制相似问题