0
我正在做一個觸摸屏的中心連接最點遊戲我在AS3的實習,這是我的遊戲流程的快速縮影:讓線捕捉到一個點
- 用戶選擇一個級別。
- 該級別的圖像/座標加載並將圖像添加到舞臺。
- 當加載點的座標(XML)時,點將連接到它們的影片剪輯(
circlePoint
)。所有這些動畫片段都有一個唯一的值(circlePoint.id
)和一個MouseEvent.MOUSE_OVER
偵聽器,它會觸發clickPoint()
。我的pointContainer
中推動了影片剪輯。 - 一條直線跟隨我的鼠標,它始於第一個點。
- 如果我的
gameCounter
變量與MovieClip的id
相同,則該線將捕捉到該點,並且將在我的鼠標之後開始一條新線。當然這條新線從最後一個被觸摸的點開始。
所有這一切都像一個魅力,但我面臨着一個問題;如果我的鼠標與MovieClip發生碰撞,則線將捕捉當前鼠標位置。那個位置是我的circlePoint
的一角,我希望它成爲中心。所以我決定讓新的一行開始在當前點的中心。但前一行仍然在circlePoint
的角落,新的一行開始在中心,它看起來不太好。我正在考慮減小我的點的大小,但點會變得太小而不能觸摸,因爲它是一個觸摸屏遊戲。這是我到目前爲止已經寫的:當所有的影片剪輯添加到舞臺
private function setStartPoint():void{
mouseLines.push(new Sprite);
stage.addChild(mouseLines[mouseLines.length-1]);
holderX = pointContainer.getChildAt(0).x;
holderY = pointContainer.getChildAt(0).y;
stage.removeEventListener(MouseEvent.CLICK, setStartPoint);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseFollower);
stage.addEventListener(MouseEvent.CLICK, clickPoint);
}
的setStartPoint()
功能被觸發。
private function clickPoint(e:MouseEvent):void{
if(gameCounter == e.target.id){
holderX = e.target.x;
holderY = e.target.y;
mouseLines[mouseLines.length-1].graphics.lineTo(holderX, holderY);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseFollower);
gameCounter++;
mouseLines.push(new Sprite);
stage.addChild(mouseLines[mouseLines.length-1]);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseFollower);
}
}
clickPoint()
被如上所述的MOUSE_OVER
解僱。
private function mouseFollower(e:MouseEvent):void{
mouseLines[mouseLines.length-1].graphics.clear();
mouseLines[mouseLines.length-1].graphics.lineStyle(5,0x0000FF);
mouseLines[mouseLines.length-1].graphics.moveTo(holderX, holderY);
mouseLines[mouseLines.length-1].graphics.lineTo(mouseX, mouseY);
mouseLines[mouseLines.length-1].mouseEnabled = false;
}
的mouseFollower()
功能借鑑了MOUSE_MOVE
行了。當然,mouseEnabled
設置爲false,因此不可點擊。
任何幫助將不勝感激。
我明白你的意思。一個非僞代碼的例子將不勝感激,但我可以嘗試自己弄清楚。 –