2012-04-19 10 views
0

私はまだAS3の周りを見据えようとしていますが、プロジェクト内の特定の子供をターゲットに設定して削除する方法を見つけることはできません。これの解決策は、「基本的なAS3」の本のどこか1ページにありますが、私はそれを解決できません!as3 removeChild - 特定の子をターゲットできません

fillDriveway関数の一部として、addNewPoint関数で作成された赤い線を削除しようとしています(または、アルファ0にします)。

必要に応じて、ソースファイルへのリンクを提供することができます。

ありがとうございます!したがって、あなたがそれにアクセスすることはできません、私はあなたの問題は、それぞれの時間はあなたが以前のジョインポイントのインスタンスへのポインタを上書きする新しいジョインポイントを作成することだと思います

import flash.display.* 

pic.addEventListener(MouseEvent.CLICK,addNewPoint); 

var n:Number = 0; 

function addNewPoint(e:MouseEvent):void { 
    n++; 
    pointNo.text = String(n); 
    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); 
    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); 
    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

を何が起こるのですか?あなたのコードはかなり長いです、それを理解するためにいくつかのエネルギーが必要です:) – Kodiak

+0

はい、それはかなり長い申し訳ありません! addNewPoint関数は、ユーザーがクリックした場所にmcを追加し、その後のすべてのクリックでそのポイントで別のmcを追加し、前のポイントから新しいポイントに赤い線で結合します。 fillDriveway関数は描画されたこの図形を塗りつぶして、画像をマスクするために使用することができます。しかし、fillDrivewayが呼び出されたとき、最初に描画された赤い線をすべて削除したいと思っています(これらの点ではmcsではありません)。 – bigtoothmedia

答えて

0

は、ここに私のひどいコードです。 (これによりメモリリークが発生します)。

あなたはジョインポイントは、アレイに追加し、オブジェクトを作成するたび:

joinPointsArray.push(joinPoints); 

、あなたが作成したすべてのジョインポイントにアクセスすることができますあなたのfillDriveway機能:あなたがしたい何

for (var i:int = 0; i < joinPointsArray.length, i++) { 
joinPointsArray[i].alpha = 0; 
} 
+0

nice one thanks crooksy88 - このプロジェクトに関連する別の質問があります。今、あなたにお会いしましょう! – bigtoothmedia

関連する問題