1

我正在制作一个使用鼠标碰撞检测的游戏。

当鼠标撞到一个物体时,鼠标移动到坐标X0,Y0,播放器就是一个自定义鼠标光标。我用来实现这一点的代码如下。但是,当鼠标移动到碰撞后将鼠标移动到 X0,Y0 时,它会从发生碰撞的位置开始返回,而不是从屏幕顶部移动。

import flash.events.Event;

var cursor:MovieClip;

function initializeMovie ():void {

cursor = new Cursor();
addChild (cursor);
cursor.enabled = false;
Mouse.hide ();
stage.addEventListener (MouseEvent.MOUSE_MOVE, dragCursor);
}

function dragCursor (event:MouseEvent):void{

cursor.x = this.mouseX;
cursor.y = this.mouseY;
}

initializeMovie ();

this.addEventListener( Event.ENTER_FRAME, handleCollision)

function handleCollision( e:Event ):void{

if(cursor.hitTestObject( wall )){
cursor.x = 0
cursor.y = 0
     }

}
4

2 回答 2

1

当您重置光标对象的位置时,您并没有移动实际的鼠标位置,我不相信您可以实际做您想做的事情(即写入鼠标位置以移动用户光标,我相信这一点将需要系统特定的代码,例如 C#,或者我相信 Mac 端的 Objective C 和 Cocoa 或 Carbon)。

http://www.kirupa.com/forum/showthread.php?354641-Possible-to-set-mouse-position-in-flash

这是您在Mac上显然可以做到的一种方式 https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/Quartz_Services_Ref/Reference/reference.html#//apple_ref/c/func/CGWarpMouseCursorPosition

以及在 WPF 中设置鼠标位置的Windows 方法

以及Linux上的一种方式(虽然这个只有AIR支持到2.6) X11(linux桌面)下如何设置鼠标位置?

因此,如果您实现了这两种解决方案并将其打包为 AIR 应用程序,您就可以完成这项工作,但否则我很确定这是不可能的。

于 2012-08-08T02:06:23.090 回答
1

Create a button at the 0, 0 coord that is required to click to continue again. Then your user will have to move the mouse to to that spot where you can continue to have the custom cursor track your mouse.

于 2012-08-08T03:09:51.613 回答