2012-04-19 78 views
3

与as3仍然遇到障碍!这一次,我用addChild从我的库中创建了一个MC实例,现在需要访问这个孩子,就好像它是时间线上的一个正常MC,但无法使其工作。as3访问孩子为正常影片剪辑(gotoAndPlay等)

如果我指的是它的实例名称,如:

this.getChildByName("mc1").gotoAndPlay(2); 

我得到的错误,它不能做到这一点的DisplayObject。

如果我指的是它通常就好像它是只是一个MC一样在时间轴上:

mc1.gotoAndPlay(2); 

话,就无法找到它(由于它是动态创建的,我认为

任何指导,将大大真的很感谢一如既往...

我可以弹出我的一些代码,如果你想一些背景。

非常感谢!

凸轮

编辑:感谢您的答复 - 我不能得到这个工作,虽然?

var mc1:MovieClip = this.getChildByName("mc1") as MovieClip; 
if(mc1) { mc1.useHandCursor = true; 
mc1.buttonMode = true; 
mc1.addEventListener(MouseEvent.CLICK, fillDriveway); 

编辑:代码的要求:(什么,我想会是MC1一个例子的onclick到的gotoAndPlay)

import flash.display.* 

pic.addEventListener(MouseEvent.CLICK,addNewPoint); 

var n:Number = 0; 
var joinPointsArray:Array = new Array; 

function addNewPoint(e:MouseEvent):void { 
    n++; 
    pointNo.text = String(n); 
    if(n==1){ 
     var nextPoint:MovieClip = new mcstart(); 
     addChild(nextPoint); 
     nextPoint.name = "mc"+pointNo.text; 
     nextPoint.x = e.target.mouseX; 
     nextPoint.y = e.target.mouseY; 
    }else{ 
     var nextPoint:MovieClip = new newPoint(); 
     addChild(nextPoint); 
     nextPoint.name = "mc"+pointNo.text; 
     nextPoint.x = e.target.mouseX; 
     nextPoint.y = e.target.mouseY; 
    } 

    var joinPoints:MovieClip = new MovieClip(); 
    this.addChild(joinPoints); 
    joinPointsArray.push(joinPoints); 
    joinPoints.graphics.lineStyle(0.5,0xFF0000); 
    joinPoints.graphics.moveTo(this.getChildByName("mc1").x, this.getChildByName("mc1").y); 
    for(var i:int=2; i<=n; ++i){ 
     joinPoints.graphics.lineTo(this.getChildByName("mc"+i).x, this.getChildByName("mc"+i).y); 
    } 
} 

pic.addEventListener(MouseEvent.CLICK, addNewPoint); 

function fillDriveway(eventObject:MouseEvent) { 
    var joinPoints:MovieClip = new MovieClip(); 
    this.addChild(joinPoints); 
    for(var p:int=0; p<(joinPointsArray.length); ++p) { 
     joinPointsArray[p].alpha = 0; 
    } 
    this.getChildByName("mc1").alpha = 0; 
    joinPoints.graphics.beginFill(0xFFFFFF, 0.7); 
    joinPoints.graphics.moveTo(this.getChildByName("mc1").x, this.getChildByName("mc1").y); 
    for(var m:int=2; m<=n; ++m){ 
     joinPoints.graphics.lineTo(this.getChildByName("mc"+m).x, this.getChildByName("mc"+m).y); 
    } 
    joinPoints.name = "driveshape"; 
    filledDrive.text = "filled"; 
} 

function undoit(eventObject:MouseEvent) { 
    if(n > 0) { 
     if(filledDrive.text.indexOf("filled") != -1) { 
      this.removeChild(this.getChildAt(this.numChildren -1)); 
      filledDrive.text = ""; 
      }else{ 
      this.removeChild(this.getChildAt(this.numChildren -1)); 
      this.removeChild(this.getChildAt(this.numChildren -1)); 
      n--; 
      pointNo.text = String(n); 
     } 
    } 
} 

undo.addEventListener(MouseEvent.CLICK, undoit); 

function maskDrive(eventObject:MouseEvent) { 
    if(filledDrive.text.indexOf("filled") != -1) { 
     var finishA:MovieClip = new finishMC(); 
     this.addChild(finishA); 
     finishA.x = 310; 
     finishA.y = 100; 
     finishA.mask = getChildByName("driveshape"); 
     finishA.gotoAndPlay(2); 
    } 
} 

//BTN Actions 
function btn1over(myEvent:MouseEvent) { 
    btn1.gotoAndPlay(2); 
} 
function btn1out(myEvent:MouseEvent) { 
    btn1.gotoAndPlay(11); 
} 
function btn2over(myEvent:MouseEvent) { 
    btn2.gotoAndPlay(2); 
} 
function btn2out(myEvent:MouseEvent) { 
    btn2.gotoAndPlay(11); 
} 
function btn3over(myEvent:MouseEvent) { 
    btn3.gotoAndPlay(2); 
} 
function btn3out(myEvent:MouseEvent) { 
    btn3.gotoAndPlay(11); 
} 

//BTN Calls 
btn1.addEventListener(MouseEvent.CLICK, fillDriveway); 
btn1.addEventListener(MouseEvent.ROLL_OVER, btn1over); 
btn1.addEventListener(MouseEvent.ROLL_OUT, btn1out); 
btn1.buttonMode = true; 
btn1.useHandCursor = true; 
btn2.addEventListener(MouseEvent.CLICK, maskDrive); 
btn2.addEventListener(MouseEvent.ROLL_OVER, btn2over); 
btn2.addEventListener(MouseEvent.ROLL_OUT, btn2out); 
btn2.buttonMode = true; 
btn2.useHandCursor = true; 
btn3.buttonMode = true; 
btn3.useHandCursor = true; 
btn3.addEventListener(MouseEvent.ROLL_OVER, btn3over); 
btn3.addEventListener(MouseEvent.ROLL_OUT, btn3out); 
+0

是的代码请。 – Torious 2012-04-19 13:38:46

回答

3

你尝试将其转换为影片剪辑?

var mc:MovieClip = this.getChildByName("mc1") as MovieClip; 
if(mc) 
{ 
    mc.gotoAndPlay(); 
} 
+1

或者只是'MovieClip(this.getChildByName(“mc1”))。gotoAndPlay(1);' – shanethehat 2012-04-19 14:25:02

+0

哇!这很简单...谢谢你们! – bigtoothmedia 2012-04-19 15:06:42

+0

所以这项工作?因为我不想...... var mc1:MovieClip = this.getChildByName(“mc1”)as MovieClip; (mc1){ \t mc1.useHandCursor = true; \t mc1.buttonMode = true; \t mc1.addEventListener(MouseEvent.CLICK,fillDriveway); } – bigtoothmedia 2012-04-20 09:19:18