我正在为我在 AS3 的实习制作一个触摸屏连接点游戏,这是我的游戏流程的一个快速缩影:
- 用户选择一个级别。
- 加载该级别的图像/坐标,并将图像添加到舞台。
- 当加载点的坐标 (XML) 时,这些点将获得
circlePoint
附加的 MovieClips ( )。所有这些 MovieClip 都有一个唯一的值 (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()
当所有的 MovieClips 都添加到舞台时触发该函数。
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 所以它是不可点击的。
任何帮助将不胜感激。