Просмотр полной версии : Динамическое создание и загрузка Image
Хм, первое не прошло...
Господа, выручайте!
Бьюсь второй день, пробовал разные варианты (работают), мой код отказывается.
код прилагаю. во FlashDevelop.
загружает xml, и читает данные, должен создать и расставить картинки в соответствии с указанными значениями. Ошибки не пишет, картинок не видно.
забавно, не надо никаких загрузчиков, тупо указал
image.source = "path";
фантастика. Вопрос теперь в другом. стал проверять в браузере, а в браузере пишет ошибку при загрузке XML через HTTPService. Хотя при запуске через FlashDebuger всё ок.
В браузере, даже картинка бэкграунда загружется, а xml нет.
carrotoff
10.04.2011, 21:33
я думаю лучше выложить фрагменты кода, ибо качать метровый архив и ковыряться в нем вряд ли кто захочет
оказалось всё просто, загрузчик был лишним.
достаточным было
image.source = "path";
а не отображалось потому что не хватало
this.addChild( image );
кто же мог догадаться, после PHP выглядит всё немного странно. Хотя я уже сталкивался с Google Map.
теперь проблема в том, что при запуске через FD всё гут, но в браузере, пишет ошибку при попытке загрузить XML. Мозилка говорит что файл XML не нарушен и проверку проходит.
Добавлено через 2 часа 7 минут
Разобрался, куда не плюнь всё под носом, и отсутствие подобных вопросов прям удручает.
ошибка в Security (http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html), не думал что локальный файл, может быть запрещен. Хотя, понятно, он с ним работал ни как с сайтом, потому и не читал. всё правильно. ужос.
вот финальный код, вдруг кому пригодится:
<?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 минуту
чего то я запутался...
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?
пытаюсь сделать всплывающую картинку (типо окно в нужных координатах), но кроме картинки там будет и текстовое поле и ещё картинка (они будут меняться в зависимости от нажатия). Может просто есть, что-то подобное уже... буду очень признателен.
Чтобы увидеть id
event.currentTarget.id
Чтобы достучаться до элемента
item.name = "имя элемента"
this.getChildByName("имя элемента");
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.