Изображение НЕ следует за мышью. startDrag и stopDrag

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Изображение НЕ следует за мышью. startDrag и stopDrag

Сообщение Casperovskii »

wierusna
Действительно работает =) Мои поздравления и небольшое пожелание: сделать X и Y рандомным у создавающейся картинки. Только что потестил твое приложение - картинки появляются друг под другом.
wierusna
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40

Re: Изображение НЕ следует за мышью. startDrag и stopDrag

Сообщение wierusna »

Casperovskii писал(а):wierusna
Действительно работает =) Мои поздравления и небольшое пожелание: сделать X и Y рандомным у создавающейся картинки. Только что потестил твое приложение - картинки появляются друг под другом.
Да, да над этим уже думал. Спасибо!
wierusna
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40

Re: Изображение НЕ следует за мышью. startDrag и stopDrag

Сообщение wierusna »

Блин, возникла новая проблема((
Подключаю класс Main.as
На сцене 2 объекта (древовидный список с именем mytree и черный прямоугольник с именем img)
При компиляции ошибок нету и все работает, кроме древовидного списка - не загружается XML (по отдельности все работает)
Вот код из класса Main.as (сорри за говнокод. Я самоучка, литературы не читал :roll: ) Помогите!

Код: Выделить всё

 package {    import flash.display.*;    import flash.events.*;    import com.yahoo.astra.fl.controls.treeClasses.*;    import fl.events.ListEvent;    import flash.utils.ByteArray;    import flash.net.URLRequest;    import flash.net.URLRequestHeader;    import flash.net.URLRequestMethod;    import flash.net.URLLoader;    import flash.system.LoaderContext    import flash.system.ApplicationDomain    import flash.display.MovieClip;    import flash.display.Loader;    import flash.xml.XMLDocument;    import flash.system.*;    import flash.display.Sprite;    import flash.display.Bitmap;    import flash.display.BitmapData;    import com.yahoo.astra.fl.controls.treeClasses.*;    import vk.api.serialization.json.JSON;    import vk.api.MD5;    import vk.APIConnection;    import vk.events.*;    import vk.ui.*;    import vk.PNGEncoder;     import vk.MultipartURLLoader;    import vk.MultipartURLLoaderEvent;    import vk.api.serialization.json.JSON;    //папку vk можно найти в исходнике.      public class Main extends Sprite    {        //turaga vars                public var avaStage:String;//адрес загружаемой картинки из xml        public var ava:Loader = new Loader();//loader картинки из xml         public var XMLLoader:URLLoader = new URLLoader();        public var XMLdata:XML = new XML();        public var context:LoaderContext = new LoaderContext();        public var index:MovieClip = new MovieClip();        //turaga vars           public var uploadphoto:VKButton; //обычная кнопка        public var loader:Loader = new Loader();        public var urlforpost:String;//Адрес, на который будем отправлять фотографию, чтобы загрузить в профиль         public var urlofphoto:String;//адрес аватара        public var api_id:Number;        public var viewer_id:Number;        public var sid:String;        public var secret:String;        public var changephotobtn:VKButton; //обычная кнопка        public var profilephoto:Bitmap; //фотография пользователя        public var brr:ByteArray;        //получаем flashvars        public var flashVars:Object = stage.loaderInfo.parameters as Object;        //инициализация        public var VK:APIConnection = new APIConnection(flashVars);         public function Main()        {                                                            context.securityDomain = SecurityDomain.currentDomain;            context.applicationDomain = ApplicationDomain.currentDomain;                              //переменные приложения             api_id = flashVars['api_id'];            viewer_id = flashVars['viewer_id'];            sid = flashVars['sid'];            secret = flashVars['secret'];            //получаем адрес, на который будем отправлять картинку            VK.api('photos.getProfileUploadServer', {}, geturl, onError);                        addChild(index);            setChildIndex(index, 0);            XMLLoader.addEventListener(Event.COMPLETE, xmlLoaded)                                 }        private function xmlLoaded(event:Event):void {        XMLdata = new XML(event.target.data);        mytree.dataProvider = new TreeDataProvider(XMLdata);        XMLLoader.load(new URLRequest("http://mega-tv.do.am/XMLturaga/img.xml"));         mytree.addEventListener(ListEvent.ITEM_CLICK, addClick);                        }                        private function addClick (ev:ListEvent) {         if (ev.item.src != null) {                //removeChild(getChildAt(0));        avaStage = (ev.item.src);        var pictLdr:Loader = new Loader();        var pictURLReq:URLRequest = new URLRequest(avaStage);                         var spr:Sprite=new Sprite()        spr.x=300;        spr.y=400;        addChild(spr)         pictLdr.load(pictURLReq, context) as MovieClip;                 //addChild(pictLdr);        spr.addChild(pictLdr)         setChildIndex(spr, 0);        spr.addEventListener(MouseEvent.MOUSE_DOWN, startDraging);        spr.addEventListener(MouseEvent.MOUSE_UP, stopDraging);}   }                                        private function startDraging(e:MouseEvent):void{    e.currentTarget.startDrag();    } private function stopDraging(e:MouseEvent):void{   e.currentTarget.stopDrag();  }                                                                                                                                                                                                private function geturl(data:Object):void        {            urlforpost = data.upload_url;            //получаем фотографию пользователя с профиля             VK.api('getProfiles', {uids:viewer_id,fields:'photo_big'}, geturlofprofilephoto, onError);         }         private function geturlofprofilephoto(data:Object):void        {                         urlofphoto = data[0]['photo_big'];            //загружаем фотографию            var loaderContext:LoaderContext = new LoaderContext();            loaderContext.checkPolicyFile = true            loader.load(new URLRequest(urlofphoto),loaderContext);            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,dobtn);         }        function dobtn(e:Event):void        {            //помещаем фотографию на сцену, используя BitMapData.             var bmp:Bitmap = loader.content as Bitmap;             profilephoto = new Bitmap(bmp.bitmapData);             addChild(profilephoto);             addChild(img);//небольшой костыль, просто могут возникнуть проблемы с "наложением" картинок друг на друга..              //позволяем перетаскивать картинку на профильную фотографию..              img.addEventListener(MouseEvent.MOUSE_DOWN, sdrag);             function sdrag(e:MouseEvent):void            {                img.startDrag();            }            img.addEventListener(MouseEvent.MOUSE_UP, stdrag);            function stdrag(e:MouseEvent):void            {                img.stopDrag();            }                            changephotobtn = new VKButton("Изменить аватар"); // при нажатии на эту кнопку, фотография сохранится в профиль.             changephotobtn.x = 250;            addChild(changephotobtn);            //сохраняем            changephotobtn.addEventListener(MouseEvent.CLICK,save);         }         function save(e:MouseEvent):void        {            var raw:BitmapData = new BitmapData(loader.width,loader.height);//"фотографируем" область где находится аватар, чтобы понять как расположена картинка            raw.draw(stage);            brr = PNGEncoder.encode(raw);            changephoto(urlforpost,brr);        }         public function changephoto(Url:String,brr:ByteArray):void        {            var mll:MultipartURLLoader = new MultipartURLLoader();            mll.addFile(brr, "file.jpg", "photo", 'image/jpg');            mll.load(Url);            mll.addEventListener(Event.COMPLETE, loadComplete);           }        function loadComplete(e:Event):void        {            var loader:URLLoader = MultipartURLLoader(e.currentTarget).loader;            var response = JSON.decode(loader.data);                        VK.api('photos.saveProfilePhoto', {server:response.server,photo:response.photo,hash:response.hash}, savephoto, onError);         }         private function savephoto(data:Object):void        {            trace("OK");        }        private function onError(data:Object):void        {            trace("ERROR");        }    } } 
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Изображение НЕ следует за мышью. startDrag и stopDrag

Сообщение Alazaur »

Строку 93

Код: Выделить всё

 XMLLoader.load(new URLRequest("http://mega-tv.do.am/XMLturaga/img.xml"));
нужно перенести под строку 85

Код: Выделить всё

XMLLoader.addEventListener(Event.COMPLETE, xmlLoaded)//Сюда
wierusna
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40

Re: Изображение НЕ следует за мышью. startDrag и stopDrag

Сообщение wierusna »

Alazaur
Спасибо вам большое еще раз!! Очень выручаете!
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Изображение НЕ следует за мышью. startDrag и stopDrag

Сообщение Casperovskii »

Смотрел твое приложение, не будешь добр скинуть код поворота объекта относительно не центра, а произвольной точки?
Ответить