0
我有6個拖放和hitTest功能的對象。很明顯,當我將一個對象拖到hitTest區域時,它是正確的。AS3:通過鼠標拖動或按鍵移動
但我的問題是,我想通過鼠標和鍵盤按鍵控制這6個對象。如果我不想拖動它們,那麼我可以通過鍵箭頭移動它們。
第二個問題是,當這兩種方式來完成,如果我想移動的鍵,然後一個對象我抓住第一個免費對象,它是不是「hitTested」
我能做這些事情在AS3?在這些項目中很奇怪的解決方案,但我需要知道是否有可能。
這裏是我的代碼拖放功能
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
import flash.display.MovieClip;
public class Main extends MovieClip
{
var xPos:int;
var yPos:int;
var errors:int;
var wins:int;
public function Main():void
{
addListeners(objectone,objecttwo,objectthree,objectfour,objectfive);
errors = 1;
wins = 1;
}
private function getPosition(target:Object):void
{
xPos = target.x;
yPos = target.y;
}
private function dragObject(e:MouseEvent):void
{
info.text = "";
getPosition(e.target);
e.target.startDrag(true);
}
private function stopDragObject(e:MouseEvent):void
{
if (e.target.hitTestObject(getChildByName(e.target.name + "Target")))
{
e.target.x = getChildByName(e.target.name + "Target").x;
e.target.y = getChildByName(e.target.name + "Target").y;
info.text = "Bingo!";
wins++;
}
else
{
e.target.x = xPos;
e.target.y = yPos;
bledy.text = "Wrong: " + errors++;
}
if(errors == 4) {
errors = 1;
gotoAndPlay(2);
}
if(wins == 9) {
wins = 1;
gotoAndStop(3);
}
e.target.stopDrag();
}
private function addListeners(... objects):void
{
for (var i:int = 0; i < objects.length; i++)
{
objects[i].addEventListener(MouseEvent.MOUSE_DOWN, dragObject);
objects[i].addEventListener(MouseEvent.MOUSE_UP, stopDragObject);
}
}
}
}
請給我一些代碼的技巧! 乾杯!
嗯,我使用純閃光燈。我不知道flex的任何事情。任何代碼提示? – Kamil 2012-07-25 09:08:47
好的。您必須在要移動的對象上註冊mouseDown事件,然後監聽stage.mouseMove和stage.mouseUu。在鼠標上拖動/移動。在鼠標上完成拖動並將偵聽器移除到stage.mousemove和stage.mouseUp。 – 2012-08-02 06:41:20