Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Динамическое создание и загрузка Image (http://www.flasher.ru/forum/showthread.php?t=153938)

ZZZubec 10.04.2011 17:47

Динамическое создание и загрузка Image
 
Вложений: 1
Хм, первое не прошло...

Господа, выручайте!

Бьюсь второй день, пробовал разные варианты (работают), мой код отказывается.
код прилагаю. во FlashDevelop.

загружает xml, и читает данные, должен создать и расставить картинки в соответствии с указанными значениями. Ошибки не пишет, картинок не видно.

ZZZubec 10.04.2011 21:00

забавно, не надо никаких загрузчиков, тупо указал

image.source = "path";

фантастика. Вопрос теперь в другом. стал проверять в браузере, а в браузере пишет ошибку при загрузке XML через HTTPService. Хотя при запуске через FlashDebuger всё ок.
В браузере, даже картинка бэкграунда загружется, а xml нет.

carrotoff 10.04.2011 21:33

я думаю лучше выложить фрагменты кода, ибо качать метровый архив и ковыряться в нем вряд ли кто захочет

ZZZubec 10.04.2011 21:39

оказалось всё просто, загрузчик был лишним.
достаточным было
Код AS1/AS2:

image.source = "path";

а не отображалось потому что не хватало
Код AS1/AS2:

this.addChild( image );

кто же мог догадаться, после PHP выглядит всё немного странно. Хотя я уже сталкивался с Google Map.
теперь проблема в том, что при запуске через FD всё гут, но в браузере, пишет ошибку при попытке загрузить XML. Мозилка говорит что файл XML не нарушен и проверку проходит.

Добавлено через 2 часа 7 минут
Разобрался, куда не плюнь всё под носом, и отсутствие подобных вопросов прям удручает.
ошибка в Security (http://www.macromedia.com/support/do...manager04.html), не думал что локальный файл, может быть запрещен. Хотя, понятно, он с ним работал ни как с сайтом, потому и не читал. всё правильно. ужос.

вот финальный код, вдруг кому пригодится:
Код AS1/AS2:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application layout="absolute" enterFrame="start_prog(event)" xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script><![CDATA[
 
                import flash.display.Loader;
                import flash.events.Event;
                import flash.geom.Point;
                import flash.net.URLLoader;
                import flash.net.URLRequest;
                import mx.controls.Image;
                import mx.rpc.events.ResultEvent;
                import mx.rpc.events.FaultEvent;
                import mx.controls.Alert;
                import mx.rpc.http.HTTPService;
                import AdressItem;
 
                private var alert:Alert;                       
                private var needInit:Boolean = true;
                private var items:Array = new Array();
                private var xmlLoader:URLLoader = new URLLoader();
                public var adresses:XML = new XML();
 
                private function http_fault(event:FaultEvent):void
                {
                        var title:String = event.type + " (" + event.fault.faultCode + ")";
                        var text:String = "Fault load XML"; //event.fault.faultString
                        alert = Alert.show(text, title);
                }
 
                private function loadXML( event:Event ):void
                {
                        //OK
                        adresses = XML(event.target.data);
                        trace( "start reed XML:" );
                        trace( adresses );
                        for ( var i:int = 0; i < adresses.node.length(); i++ )
                        {
                                /*
                                var item:AdressItem = new AdressItem(        adresses.node[i].text[0],
                                                                                                                adresses.node[i].text[1],
                                                                                                                adresses.node[i].text[2],
                                                                                                                adresses.node[i].picture,
                                                                                                                adresses.node[i].coord.@x,
                                                                                                                adresses.node[i].coord.@y );
                                item.visible = true;
                                */

                                var item:Image = new Image();
 
                                item.x = adresses.node[i].coord.@x;
                                item.y = adresses.node[i].coord.@y;               
 
                                item.source = "point.png";
                                this.addChild( item );
 
                        }
 
                        //Alert.show(XML(event.result));
                }
 
                public function start_prog(event:Event):void
                {
                        if ( needInit )
                        {
                                trace( "Need init" );
                                var background:Image = new Image();
                                background.source = "map.jpg";
                                this.addChild( background );
 
                                needInit = false;
                                //resultFormat="e4x" fault="http_fault(event);" result="http_result(event)"
                                xmlLoader.addEventListener( Event.COMPLETE, loadXML );
                                try
                                {
                                        xmlLoader.load( new URLRequest( "adress_map.xml" ) );
                                }
                                catch (error:ArgumentError)
                                {
                                        Alert.show("An ArgumentError has occurred.");
                                }
                                catch (error:SecurityError)
                                {
                                        Alert.show("A SecurityError has occurred.");
                                }
                        }
                }
 
                trace( "start" );
        ]]></mx:Script>
</mx:Application>

Добавлено через 25 часов 41 минуту
чего то я запутался...
Код AS1/AS2:

for( var i:int=0
...
 
var item:Image = new Image();
item.id = i;
 
item.x = adresses.node[i].coord.@x;
item.y = adresses.node[i].coord.@y;               
 
item.source = "point.png";
item.addEventListener(MouseEvent.CLICK, function(event:Event):void
{
    //mouse click, need show image
    trace( event.id );
}
this.addChild( item );
...

trace( item.id );
выдает ошибку: невозможно преобразовать flash.events::MouseEvent@2135a29 в mx.controls.Image
я знаю что первый параметр event, а не Item.

ВОПРОС: Как мне получить доступ к динамическому элементу item.id?

пытаюсь сделать всплывающую картинку (типо окно в нужных координатах), но кроме картинки там будет и текстовое поле и ещё картинка (они будут меняться в зависимости от нажатия). Может просто есть, что-то подобное уже... буду очень признателен.

Actual 20.04.2011 12:41

Чтобы увидеть id
Код AS3:

event.currentTarget.id

Чтобы достучаться до элемента
Код AS3:

item.name = "имя элемента"
this.getChildByName("имя элемента");



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

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