Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   перемешение клипа на точку клика (http://www.flasher.ru/forum/showthread.php?t=141254)

JekelSkaz 20.06.2010 08:04

перемешение клипа на точку клика
 
есть клип "retro" надо чтобы он подползал к месту клика на всей рабочей области и останавливался....сейчас все работает только он после нажатия ползает и дальше ползает за курсором) тоесть оно переменные mpx и mpy постоянно перезаписывает( исправте пожалуйста и подскажите как правильно написать такой код?

Код AS3:

package lib{
  import flash.display.*;
  import flash.events.*;
        public class engine extends MovieClip{
                public function engine(){
                        stage.addEventListener(MouseEvent.MOUSE_DOWN, moveto);
                }
                public function moveto(e:Event):void{
                        var mpx:Number = mouseX;
                        var mpy:Number = mouseY;
                        if(mpx>retro.x){
                        if(mpx!=retro.x){
                                retro.x+=1;
                                addEventListener(Event.ENTER_FRAME, moveto);
                        }
                        }
                        if(mpy>retro.y){
                        if(mpy!=retro.y){
                                retro.y+=1;
                                addEventListener(Event.ENTER_FRAME, moveto);
 
                        }
                        }
                        if(mpx<retro.x){
                        if(mpx!=retro.x){
                                retro.x-=1;
                                addEventListener(Event.ENTER_FRAME, moveto);
 
                        }
                        }
                        if(mpy<retro.y){
                        if(mpy!=retro.y){
                                retro.y-=1;
                                addEventListener(Event.ENTER_FRAME, moveto);
 
                        }
                        }
                }
        }
}


Aldvin 20.06.2010 12:24

Код AS3:

package lib{
  import flash.display.*;
  import flash.events.*;
        public class engine extends MovieClip{
                var mpx:Number;
                var mpy:Number;
                public function engine(){
                        stage.addEventListener(MouseEvent.MOUSE_DOWN, setCoords);
                }
                // Запоминаем куда двигаться
                public function setCoords(e:Event):void{
                        mpx = mouseX;
                        mpy = mouseY;
                        addEventListener(Event.ENTER_FRAME, moveto);
                }
                public function moveto(e:Event):void{
                        // Проверяем приехали ли к точке назначения
                        if(        Math.round(mpx)==Math.round(retro.x) &&
                                Math.round(mpy)==Math.round(retro.y) ){
                                retro.x=mpx;
                                retro.y=mpy;
                                removeEventListener(Event.ENTER_FRAME, moveto);
                                return;
                        }
 
                        // Перемещаемся
                        if(mpx>retro.x)        retro.x+=1 else retro.x-=1;
                        if(mpy>retro.y)        retro.y+=1 else retro.y-=1;
                }
        }
}


JekelSkaz 20.06.2010 16:50

Большое спасибо, работает) правда ratro клип немного трусит иногда при движении)) ну ниче) но когда увеличевать его скорость - его вообще рвет) оно я так понял не хоходит до mpx и mpy и пытается туда долезть))) но не получается) как исправить?


Часовой пояс GMT +4, время: 10:05.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.