2012-04-19 2 views
3

все еще встречающийся препятствия с as3! На этот раз я создал экземпляр MC из моей библиотеки с помощью addChild и теперь должен получить доступ к этому ребенку, как если бы он был обычным MC на временной шкале, но не может заставить его работать.as3 доступ ребенок как обычный фильм клип (gotoAndPlay и т.п.)

Если я обращаться к нему по имени экземпляра, как:

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

Я получаю сообщение об ошибке, что он не может сделать это к DisplayObject.

Если я обращаюсь к нему нормально, как если бы это было просто MC на временной шкале, как:.

mc1.gotoAndPlay(2); 

Тогда он не может найти его (из-за этого создается динамически Я думаю

Любое руководство будет действительно очень ценится как всегда ...

Я всплывают некоторые из моего кода, если вы хотите какой-то контекст.

Спасибо так много!

Cam

EDIT: Спасибо за ответы - я не могу заставить это работать?

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

EDIT: Код по запросу: (пример того, что я хочу, было бы для 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

ответ

3

Вы пытались бросить его в мувиклип?

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

Или просто 'MovieClip (this.getChildByName (" mc1 ")). GotoAndPlay (1);' – shanethehat

+0

Вау! Это было легко ... спасибо, ребята! – bigtoothmedia

+0

Так должно ли это работать? Потому что я не хочу ... var mc1: MovieClip = this.getChildByName ("mc1") как MovieClip; if (mc1) { \t mc1.useHandCursor = true; \t mc1.buttonMode = true; \t mc1.addEventListener (MouseEvent.CLICK, fillDriveway); } – bigtoothmedia

Смежные вопросы