首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3:新手,addChild的问题

AS3:新手,addChild的问题
EN

Stack Overflow用户
提问于 2011-02-15 18:21:57
回答 1查看 461关注 0票数 0

向大家问好。

我对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中,我有两个按钮来更改颜色:

代码语言:javascript
复制
//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)也会更改颜色.我做错什么了?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-02-15 18:53:56

  1. changeColor的一个调用应该足够了。
  2. 您可以重用对象自己的colorTransform

函数changeColor(object: DisplayObject,color:Number){ var颜色转换: object.transform.colorTransform;colorchange.color = color;object.transform.colorTransform =color;}

  • --您可以省略对DisplayObject的所有类型转换--所有Sprite和MovieClips以及加载程序都是DisplayObject的子类,因此在需要DisplayObjects的地方,它们应该工作得很好:

var myMC:DisplayObject =_targetMC.getChildByName(“签名”);// getChildByName总是返回一个DisplayObject

var ldr: DisplayObject

  • Your = new ();ldr.name = "signature";ldr.loadBytes(byteArray);_target.addChild(ldr);// Loader扩展了_target.addChild colorChange函数。一定有别的地方不对劲。我不能完全确定,但我想您的问题要么与所有目标(_mc)对象的混淆有关:

代码语言:javascript
复制
- parameter "target" of function "capture"
- parameter "\_target" of function "capture"
- member variable "\_targetMC"

或者,这可能与每次调用_targetMC时向同一个capture()添加一个名为“签名”的新加载器有关,但永远不要删除旧的加载程序:在第二次单击之后,将出现多个带有“签名”的剪辑,这可能会导致问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5007747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档