雖然說flixel中有button類型,也可以自行更換裡面的圖,但就是少了那麼一點點的自由度
而常常只是需要知道某個sprite是否被滑鼠點擊,就套上button…可能太麻煩了,而且還不一定能達到想要的效果。
基於這個原因,我自已刻了一個類別~
只要將sprite繼承該類別,再直接override裡面的 over、out、onPressed、onReleased,就可以簡單的使用mouse event了
package
{
import org.flixel.*;
public class FlixelBtn extends FlxSprite
{
protected var stage:Game;
private var isOver:Boolean=false;
public function FlixelBtn()
{}
override public function update():void
{
updateMouse();
if(isOver)
{
if(FlxG.mouse.justPressed())
onPressed();
else if(FlxG.mouse.justReleased())
onReleased();
}
}
protected function onPressed():void{}
protected function onReleased():void{}
protected function onOver():void{}
protected function onOut():void{}
protected function updateMouse():void
{
if(stage.targetObj==this)return;
if(FlxG.mouse.visible)
{
if(cameras == null)
cameras = FlxG.cameras;
var camera:FlxCamera;
var i:uint = 0;
var l:uint = cameras.length;
while(i < l)
{
camera = cameras[i++] as FlxCamera;
FlxG.mouse.getWorldPosition(camera,_point);
if(overlapsPoint(_point,true,camera))
{
if(this.framePixels.getPixel32(FlxG.mouse.x-this.x,FlxG.mouse.y-this.y))
{
isOver=true;
onOver();
}
else
{
isOver=false;
onOut();
}
}
else
{
isOver=false;
onOut();
}
}
}
}
}
}
沒有留言:
張貼留言