2014-11-23 47 views
0

我到處搜索過有關此問題的其他人,並且似乎無法找到解決方案,所以在這裏。Flash CS3的startDrag在主fla內的動畫片段中的對象上

我在我的教科書中找到了有關益智遊戲的Flash CS3教程。這很簡單,如果你抓住一個叫startDrag和stopDrag的東西。

所以我開始製作自己的遊戲,並在其中創建了一個名爲puzzleGame的movieClip。我幾乎將原始教程中的代碼複製到puzzleGame movieClip裏面,但是當我測試它時,我總是得到一個錯誤,說startDrag和stopDrag不是函數。它與我的主舞臺中的這個動畫片段有關。

如果我將代碼更改爲this.startDrag,那麼它實際上會拖動整個框架。我認爲,無論出於何種原因,它不會深入到實際的物體拖動,而只是看到我觸摸動畫片本身。

這是否有意義?

這是我的frame2代碼。

stop(); 

import flash.utils.*; 

var mySound:Sound = new correctSound(); 

var score:Number = 0; 

var numClips:Number = 7; 

var myClip = new Array(numClips); 

myClip[0] = addChild(new a0()); 
myClip[1] = addChild(new a1()); 
myClip[2] = addChild(new a2()); 
myClip[3] = addChild(new a3()); 
myClip[4] = addChild(new a4()); 
myClip[5] = addChild(new a5()); 
myClip[6] = addChild(new a6()); 
//myClip[7] = addChild(new a7()); 
//myClip[8] = addChild(new a8()); 
//myClip[9] = addChild(new a9()); 

myClip[0].name = "piece0"; 
myClip[1].name = "piece1"; 
myClip[2].name = "piece2"; 
myClip[3].name = "piece3"; 
myClip[4].name = "piece4"; 
myClip[5].name = "piece5"; 
myClip[6].name = "piece6"; 
//myClip[7].name = "piece7"; 
//myClip[8].name = "piece8"; 
//myClip[9].name = "piece9"; 

var nph = new Array(numClips); 

nph[0] = nph0_mc; 
nph[1] = nph1_mc; 
nph[2] = nph2_mc; 
nph[3] = nph3_mc; 
nph[4] = nph4_mc; 
nph[5] = nph5_mc; 
nph[6] = nph6_mc; 
//nph[7] = nph7_mc; 
//nph[8] = nph8_mc; 
//nph[9] = nph9_mc; 

var tpg = new Array(numClips); 

tpg[0] = tpg0_mc; 
tpg[1] = tpg1_mc; 
tpg[2] = tpg2_mc; 
tpg[3] = tpg3_mc; 
tpg[4] = tpg4_mc; 
tpg[5] = tpg5_mc; 
tpg[6] = tpg6_mc; 
//tpg[7] = tpg7_mc; 
//tpg[8] = tpg8_mc; 
//tpg[9] = tpg9_mc; 

var x0 = myClip[0].x = Math.random()*400+50; 
var y0 = myClip[0].y = Math.random()*50+50; 
var x1 = myClip[1].x = Math.random()*400+50; 
var y1 = myClip[1].y = Math.random()*50+50; 
var x2 = myClip[2].x = Math.random()*400+50; 
var y2 = myClip[2].y = Math.random()*50+50; 
var x3 = myClip[3].x = Math.random()*400+50; 
var y3 = myClip[3].y = Math.random()*50+50; 
var x4 = myClip[4].x = Math.random()*400+50; 
var y4 = myClip[4].y = Math.random()*50+50; 
var x5 = myClip[5].x = Math.random()*400+50; 
var y5 = myClip[5].y = Math.random()*50+50; 
var x6 = myClip[6].x = Math.random()*400+50; 
var y6 = myClip[6].y = Math.random()*50+50; 
/*var x7 = myClip[7].x = Math.random()*400+50; 
var y7 = myClip[7].y = Math.random()*50+50; 
var x8 = myClip[8].x = Math.random()*400+50; 
var y8 = myClip[8].y = Math.random()*50+50; 
var x9 = myClip[9].x = Math.random()*400+50; 
var y9 = myClip[9].y = Math.random()*50+50;*/ 

var j:Number; 

for (var k:Number = 0; k < numClips; k++) { 
    myClip[k].addEventListener("mouseDown", pieceMove); 
    myClip[k].addEventListener("mouseUp", pieceMove); 
} 

function pieceMove(evt:Event):void { 
    if (evt.type == "mouseDown") { 
     //mySound.play(); 
     evt.target.startDrag(); 
    } 
    else if (evt.type == "mouseUp") { 
     //mySound.play(); 
     evt.target.stopDrag(); 

for (j = 0; j < numClips; j++) { 
    if (evt.target.name == "piece" + j && 
     evt.target.hitTestObject(nph[j]) == true) { 
      removeChild(myClip[j]); 
      nph[j].alpha = 0; 
      tpg[j].alpha = 100; 
      score++; 
     } 
    else if (evt.target.name == "piece" + j) { 
     evt.target.x = Math.random()*400+50; 
     evt.target.y = Math.random()*50+50; 
    } 
} 

scor.text = score.toString(); 
if (score == 10) { 
    msgbox.text = "Congratulations !"; 
} 

} 
} 


I'm using Flash CS3 because it's required by my course I'm taking so a suggestion to use a different version of flash is not helpful. Thanks.                   

回答

0

因此,我所做的不是使用嵌入式影片剪輯,而是將其重新制作在我的主時間線內,並且工作正常。由於這個原因,它變得更加混亂,但它沒有問題。不知道爲什麼它不以第一種方式工作。

相關問題