muu*_*les 3 flash actionscript-3
我正在闪光灯中制作一个图像启示器,但是我无法绕过如何将滑杆限制为闪光灯area_mc
.主要是在mouseMoveHandler
.有人可以给我一些指示吗?
import com.greensock.*;
import com.greensock.easing.*;
function init():void {
area_mc.sliderbar_mc.buttonMode = true;
area_mc.sliderbar_mc.addEventListener(MouseEvent.MOUSE_DOWN,moveSliderbar);
stage.addEventListener(MouseEvent.MOUSE_UP,stopSliderbar);
area_mc.mask_mc.alpha = 0;
area_mc.after_mc.mask = area_mc.mask_mc;
TweenLite.to(area_mc.sliderbar_mc,3,{x:stage.stageWidth/2,ease:Elastic.easeOut});
TweenLite.to(area_mc.mask_mc,3,{x:stage.stageWidth/2,ease:Elastic.easeOut});
}
function moveSliderbar(event:MouseEvent):void {
stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
}
function stopSliderbar(event:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
}
function mouseMoveHandler(event:MouseEvent):void {
area_mc.sliderbar_mc.x = area_mc.mouseX;
var left:Number = area_mc.x - (area_mc.width / 2);
var right:Number = area_mc.x + (area_mc.width / 2);
if (area_mc.sliderbar_mc.x > right) {
area_mc.sliderbar_mc.x = right;
}
else if(area_mc.sliderbar_mc.x < left){
area_mc.sliderbar_mc.x = left;
}
area_mc.mask_mc.x = area_mc.sliderbar_mc.x;
}
init();
Run Code Online (Sandbox Code Playgroud)
基于我将您的问题解释为:"我如何给出可拖动的项目边界?".
startDrag()
有一个接受a Rectangle
(flash.geom.Rectangle
)的参数,它将作为你可以拖动东西的边界.
例如.
var rect:Rectangle = new Rectangle(0,0,100,100);
startDrag(false, rect);
Run Code Online (Sandbox Code Playgroud)
这是我如何做一个你拖动和限制的对象:
package
{
import flash.display.MovieClip;
import flash.geom.Rectangle;
import flash.events.MouseEvent;
public class DragableItem extends MovieClip
{
// vars
private var _boundaries:Rectangle;
/**
* Constructor
*/
public function DragableItem()
{
// define boundaries
// left, top, right, bottom
_boundaries = new Rectangle(30,30,200,200);
addEventListener(MouseEvent.MOUSE_DOWN, _mouseDown);
}
/**
* MOUSE_DOWN
*/
private function _mouseDown(e:MouseEvent):void
{
startDrag(false, _boundaries);
addEventListener(MouseEvent.MOUSE_UP, _stopDrag);
addEventListener(MouseEvent.MOUSE_OUT, _stopDrag);
}
/**
* MOUSE_UP
*/
private function _stopDrag(e:MouseEvent):void
{
stopDrag();
removeEventListener(MouseEvent.MOUSE_UP, _stopDrag);
removeEventListener(MouseEvent.MOUSE_OUT, _stopDrag);
}
}
}
Run Code Online (Sandbox Code Playgroud)
快速测试:
var drg:DragableItem = new DragableItem();
drg.graphics.beginFill(0);
drg.graphics.drawRect(0,0,60,60);
drg.graphics.endFill();
addChild(drg);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6169 次 |
最近记录: |