Я создаю игру с перетаскиванием, используя AS3, я хочу проверить, не находится ли за пределами Movieclip вне экрана, чтобы перемещать вид сзади и позволить пользователю выбирать, где бросить его.Проверьте, когда часть MovieClip покидает сцену
I can not test, если учетные данные MovieClip больше, чем на этапе (scaleMode = NO_SCALE) Ширина/Высота, потому что есть часть сцены, которая скрыта за окном браузера.
Это тот же аспект, что и MOUSE_LEAVE, на этот раз он должен быть для MovieClips, я попытался увидеть код за MOUSE_LEAVE, но я не смог его достичь.
Thank you.
Основной класс
[SWF(width='800', height='800',backgroundColor='#CC99FF', frameRate='60')]
public class DragTest extends Sprite
{
public function DragTest()
{
addChild(new World(this));
this.stage.scaleMode = "noScale";
this.stage.align = "TL";
this.graphics.lineStyle(5,0x555555,0.5);
this.graphics.drawRect(0,0,800,800);
}
}
МИР КЛАСС
public class World extends Container // Container from my SWC
{
private var _display:Sprite;
private var _dragPt:Point;
private var _dragedObject:MovieClip;
public function World(display:Sprite)
{
super();
_display = display;
myMC.addEventListener(MouseEvent.MOUSE_DOWN, onPickUp, false, 0, true);
display.stage.addEventListener(MouseEvent.MOUSE_UP, onDrop, false, 0, true);
display.stage.addEventListener(Event.MOUSE_LEAVE, onMouseLeave, false, 0, true);
}
protected function onMouseLeave(event:Event):void
{
trace("Mouse Is Leaving The Stage");
}
protected function onDrop(e:MouseEvent):void
{
_display.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMoveObject);
}
private function onPickUp(e:MouseEvent)
{
_dragedObject = e.currentTarget as MovieClip;
_display.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMoveObject, false, 0, true);
}
protected function onMoveObject(e:MouseEvent):void
{
var point:Point = new Point(_display.stage.mouseX, _display.stage.mouseY);
(_dragedObject as MovieClip).x = point.x;
(_dragedObject as MovieClip).y = point.y;
}
}
Ниже приведен пример: Simple Code
Просто так это не другое ** [Проблема X/Y] (http://meta.stackexchange.com/a/66378) **. Ваш вопрос больше о том, как перетащить Flash-содержимое из одного окна браузера в другое? Я смущен тем, что «Этап скрыт за окном браузера», а также говорит: «... находится за пределами экрана, чтобы переместить View позади и позволить пользователю выбрать, куда его отбросить». –
На самом деле это не перетаскивание из одного окна в другое, сцена иногда скрывается за браузером, потому что я использую noScale, поэтому, когда вы уменьшаете размер окна, часть сцены не отображается, что я пытаюсь сделать обнаруживает, когда мувиклип прикасается к показующим краям сцены, чтобы обнаружить, когда он собирается уйти, он отлично работает с MOUSE_LEAVE, я просто хочу сделать это с помощью MC. –
** [Этот ответ] (http://stackoverflow.com/a/6050299/2057709) ** не помогает? Поместите небольшой примерный пример кода, как вы это делаете, который может быть «исправлен». Обычно для перетаскивания я просто использую функцию «enterframe», которая говорит, когда кнопка мыши удерживается, а затем «myMC.x = stage.mouseX;» таким образом MC следует за мышью, и, возможно, вы также можете применить метод «Mouse_Leave» ... –