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

그래서 내가 한 일은 임베디드 무비 클립을 사용하는 대신 내 메인 타임 라인에서 다시 제작 한 것입니다. 이 때문에 지저분하지만 문제없이 작동합니다. 왜 그것이 첫번째 방법으로 작동하지 않았는지 알 수 없습니다.

관련 문제