在這個教程中我們將學習如何用Flash AS3來得到鼠標的當前方位。我們可以用此為游戲創建有趣的控制方法,例如可把鼠標當作一個游戲控制桿。現在我們先展示一下我們的作品。
下面是一個簡單的示例:
使用鼠標事件來監聽鼠標光標的運動,用變量存貯相應數據并展示其當前方位。
打開Flash并創建一個新的Flash文檔(ActionScript 3)。
按F9或執行窗口>動作打開動作面板。
鍵入一些我們將使用的變量,變量名應能一目了然。
var previousX:Number =0;
var previousY:Number = 0;
var currentX:Number = 0;
var currentY:Number = 0;
var xDir:String;
var yDir:String;
var dir:TextField = new TextField();
下面是主函數
function getMouseDirection():void
{
dir.width = stage.stageWidth; //文本區域的大小
addChild(dir); //在舞臺上添加文本區域
//在舞臺上添加一個鼠標事件監聽器,并當鼠標運動時執行checkDirection 函數
stage.addEventListener(MouseEvent.MOUSE_MOVE, checkDirection);
}
下面的代碼將檢測鼠標方位,并將結果展示在舞臺文本域上。
function
checkDirection(e:MouseEvent):void
{
getHorizontalDirection();
getVerticalDirection();
dir.text = ”x: ” + xDir + ”, y: ” + yDir;
}
檢測鼠標的方向.
//水平方向
function getHorizontalDirection():void
{
previousX = currentX; //檢測剛剛的地址
currentX = stage.mouseX; //獲取當前的地址
if (previousX > currentX) //將兩個地址進行比較來確定方向
{
xDir = “left”;
}
else if (previousX < currentX)
{
xDir = “right”;
}
else
{
xDir = “none”;
}
}
//垂直方向
function getVerticalDirection():void
{
previousY = currentY; //檢測剛剛的地址
currentY = stage.mouseY; //獲取當前的地址
if (previousY > currentY) //將兩個地址進行比較來確定方向
{
yDir = “up”;
}
else if (previousY < currentY)
{
yDir = “down”;
}
else
{
yDir = “none”;
}
}
添加下面的代碼來運行函數。當 getMouseDirection() 開始函數運行,就會建立一個可以啟動方向指示器的鼠標運動事件監聽器
getMouseDirection();
package
{
import flash.display.MovieClip;
import flash.text.TextField;
public class MouseMoveDemo extends MovieClip
{
public var previousX:Number = 0;
public var previousY:Number = 0;
public var currentX:Number = 0;
public var currentY:Number = 0;
public var xDir:String;
public var yDir:String;
public var dir:TextField = new TextField();
public function MouseMoveDemo()
{
getMouseDirection();
}
public function getMouseDirection():void
{
dir.width = stage.stageWidth;
addChild(dir);
stage.addEventListener(MouseEvent.MOUSE_MOVE, checkDirection);
}
public function
checkDirection(e:MouseEvent):void
{
getHorizontalDirection();
getVerticalDirection();
dir1.text = “x: ” + xDir
dir2.text = “y: ” + yDir;
}
public function getHorizontalDirection():void
{
previousX = currentX;
currentX = stage.mouseX;
if (previousX > currentX)
{
xDir = “left”;
}
else if (previousX < currentX)
{
xDir = “right”;
}
else
{
xDir = “none”;
}
}
public function getVerticalDirection():void
{
previousY = currentY;
currentY = stage.mouseY;
if (previousY > currentY)
{
yDir = “up”;
}
else if (previousY < currentY)
{
yDir = “down”;
}
else
{
yDir = “none”;
}
}
}
}
如果較之時間時間軸代碼而更喜歡用文檔類的話就選擇上述的方法
你可以將這個類用在任何項目中以插入鼠標方向指示器。只需將整個類復制到新的AS文檔中,將其保為”MouseMoveDemo.as”,,然后你可以用下面的使用下面的部分代碼以作參考 :
var mouseMoveDemo:MouseMoveDemo= new MouseMoveDemo();
addChild( mouseMoveDemo );
這是個比較基礎的例子,試著做做吧,并將它應用到你的項目中。
謝謝閱讀。
討論:http://www.missyuan.com/viewthread.php?tid=454657