как создать движение спрайта вверх / вниз в as3 с помощью мыши

StackOverflow https://stackoverflow.com/questions/2424644

Вопрос

Мне нужно перемещать спрайт только вертикально при перемещении мыши.Как мне реализовать это с помощью as3?

Спасибо

Это было полезно?

Решение

Флэш-версия

var s:Sprite = new Sprite();
s.x = 20;
s.graphics.beginFill(0xFF0000);
s.graphics.drawRect(0,0,20,20);
addChild(s);

stage.addEventListener(MouseEvent.MOUSE_MOVE,moveSprite);

function moveSprite(e:MouseEvent):void
{
    s.y = e.localY;
}

Гибкая версия

<mx:Canvas width="100" height="100">
            <mx:mouseMove>
                    <![CDATA[
                        s.y = event.localY;
                    ]]>
                </mx:mouseMove>
            <mx:Canvas id="s" backgroundColor="#ff0000" width="20" height="20"/>
        </mx:Canvas>

Каждый из них вы можете вставить и он будет делать то, что вы сказали.это создаст красное поле размером 20x20, которое по вертикали совпадает с мышью, но закреплено горизонтально.В гибкой версии ваша мышь должна находиться внутри содержащего ее холста.

Другие советы

addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(e:MouseEvent):void{
    mySprite.y += amount;
}

Хорошо, перетаскивание немного сложнее.Вам нужно определить прямоугольник для границ перетаскивания.Если вы хотите просто перетащить вдоль одной оси, то вы придаете прямоугольнику ширину 0.В этом примере я ограничил количество прокрутки и и вниз разными числами, которые вы можете изменить ниже.

import flash.events.MouseEvent;
import flash.geom.Rectangle;

mySprite.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);

function mouseDownHandler(event:MouseEvent):void{
    stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
    var scrollUpAmount:int = 10;
    var scrollDownAmount:int = 200;
    var boundsRect:Rectangle = new Rectangle(mySprite.x,mySprite.y-scrollUpAmount,0,mySprite.y+scrollDownAmount);
    mySprite.startDrag(false, boundsRect);
}

function mouseUpHandler(event:MouseEvent):void{
    stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
    mySprite.stopDrag();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top