Форум 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=202531)

art_maestro 21.07.2013 23:45

Узнать путь к изображению
 
Здравствуйте,

Подскажите можно ли как то решить мою задачу. Есть мувик, в который добавлен объект Loader ( загружал изображение и добавил его в мувик).
Задача такая, необходимо при клике на мувик узнать путь к изображению. Возможно ли это реализовать используя taeget или currentTarget.

Куда копать дальше

Код AS3:

private  function clickBuilding(e:MouseEvent):void
        {       
                var _mcClip:MovieClip = new MovieClip();
                    _mcClip = e.currentTarget as MovieClip;
        }


AlexCooper 22.07.2013 02:06

Зачем Вам путь? Мне кажется Вы недавно перешли из AS2 на AS3, в первом из которых путь играл очень важную роль.

art_maestro 22.07.2013 02:14

Да, Вы верно поняли. Получается узнать путь не как мне не удастся таким способом, который я описал выше?

KumoKairo 22.07.2013 08:27

Самый простой и "грязный" способ - динамически добавить свойство в ваш мувик при загрузке, в этом свойстве храните путь:
Код AS3:

movie["path"] = "http//example.com/littlepony.png"

А потом как вы написали, только
Код AS3:

private  function clickBuilding(e:MouseEvent):void
{       
    var _mcClip:MovieClip = new MovieClip();
    _mcClip = e.currentTarget as MovieClip;
    trace(_mcClip["path"]);
}

Цитата:

Есть мувик, в который добавлен объект Loader ( загружал изображение и добавил его в мувик).
Что значит в который добавлен объект Loader?
Если вы наследовали класс MovieClip и добавляли новое поле, то точно таким же способом можно добавить свойство path, и это уже будет не грязный способ, а вполне вменяемый)

AlexCooper 22.07.2013 11:37

KumoKairo тут речь немного о другом.

Цитата:

Сообщение от art_maestro (Сообщение 1141627)
Да, Вы верно поняли. Получается узнать путь не как мне не удастся таким способом, который я описал выше?

Скажите что конкретно вы хотите сделать. Думаю в действительности Вам этот путь абсолютно не нужен.

Добавлено через 30 минут
Мне кажется у Вас написанно что-то подобное ( если конечно Вы пишите не в кадрах)
Код AS3:

package  {
 
        import flash.display.Sprite;
        import flash.display.Loader;
        import flash.net.URLRequest;
        import flash.events.MouseEvent;
 
        public class TestLoad extends Sprite {
 
                public function TestLoad() {
 
                        var clip:Sprite = new Sprite();
 
                        addChild(clip);
 
                        var loader:Loader = new Loader();
                        var url:URLRequest = new URLRequest("http://www.flasher.ru/forum/image.php?u=58397&dateline=1222217437");
 
                        clip.addChild(loader);
 
                        loader.load(url);
 
                        loader.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandler) ;
                }
 
                private function mouseHandler(e:MouseEvent):void {
                        trace('mouse down');
                }
        }
}

Но я бы посоветовал написать вот так
Код AS3:

package  {
 
        import flash.display.Sprite;
        import flash.display.Loader;
        import flash.net.URLRequest;
        import flash.events.MouseEvent;
        import flash.events.Event;       
 
        public class TestLoad extends Sprite {
 
                private var clip:Sprite;
 
                public function TestLoad() {
 
                        clip = new Sprite();
 
                        addChild(clip);
 
                        var loader:Loader = new Loader();
                        var url:URLRequest = new URLRequest("http://www.flasher.ru/forum/image.php?u=58397&dateline=1222217437");
 
                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeLoad);
 
                        loader.load(url);
 
                }
 
                private function completeLoad(e:Event):void {
 
                        e.currentTarget.removeEventListener(Event.COMPLETE, completeLoad);
 
                        var image:Sprite = new Sprite();
                                image.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandler) ;
                                image.addChild(e.currentTarget.content);
 
                        clip.addChild(image);
 
                        trace('load complete');
                }
 
                private function mouseHandler(e:MouseEvent):void {
                        trace('mouse down');
                        trace('Clip Conteiner' + clip);
                        trace('Image ' + e.currentTarget);
                }
        }
 
}

В таком случае у вас при выполнении mouseHandler имеет Ваши искомые пути,
1 - clip - контейнер, для удаления, добавления элементов
2 - e.currentTarget - спрайт с изображением по которому осуществился клик.

art_maestro 22.07.2013 16:16

Спасибо, разобрался!


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

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