Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Загрузка jpg в муви клип (http://www.flasher.ru/forum/showthread.php?t=181352)

General303 21.06.2012 13:51

Загрузка jpg в муви клип
 
Категорически приветствую.
Попросили сделать flash информер с 2 текстовыми полями и 1 привью изображением. Текст и изображение грузится из XML файла находящийся рядом с флешкой.

Написал вот такой код:
Код AS3:

import flash.net.URLLoader;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLRequest;
 
const URL:String = "text.xml";
 
var loader:URLLoader;
 
init();
 
function init():void
{
        loader = new URLLoader();
        loader.addEventListener(Event.COMPLETE, comleteLoading_title1);
        loader.addEventListener(Event.COMPLETE, comleteLoading_text1);
        loader.addEventListener(Event.COMPLETE, comleteLoading_image1);
        var request:URLRequest = new URLRequest(URL);
        loader.load(request);
}
 
function comleteLoading_title1(event:Event):void
{
        var xml:XML = XML(loader.data);
        var text:String = xml.title1;
        text_txt.text = text;
 
}
 
function comleteLoading_text1(event:Event):void
{
        var xml:XML = XML(loader.data);
        var text:String = xml.text1;
        text1_txt.text = text;
}
 
function comleteLoading_image1(event:Event):void
{
        var ldr:Loader = new Loader();
        var xml:XML = XML(loader.data);
        var img:String = xml.img1;
        var urlReq:URLRequest = new URLRequest(img);
        image1.addChild(ldr);
        trace ("end")
        }

Все работает, вот только почему то загружаемое изображение не отображается в мувике с названием image1. Хотя trace говорит что все ок. В чем может быть проблема?

Заранее спасибо за ответ.

maxkar 21.06.2012 14:01

Цитата:

Хотя trace говорит что все ок. В чем может быть проблема
Какой трейс? Ваш трейс говорит максимум о том, что картинка начала загружаться. О том, что она успешно загрузилась, ничего не говорит. Для этого нужно подписываться на соответствующие события у loader.contentLoaderInfo. И поставить debug player на всякий случай. Он бы вам сказал о необработанном IOErrorEvent.

ObOs 21.06.2012 14:02

А разве у вас trace ("end"); срабатывает?
По-моему Слушать надо не loader, а loader.contentloaderinfo.
И загруженная картинка будет лежать в loader.content.

maxkar 21.06.2012 14:06

Кстати, да. Еще loader.load нужно бы вызвать или в конструктор передать URLRequest. Loader же не знает, что вам нужно грузить.

General303 21.06.2012 14:11

Можно немного поподробней.
Хотя бы показать как было бы правильно на куске кода.

maxkar 21.06.2012 14:16

Про что именно? Речь идет про ldr. Loader.contentLoaderInfo есть в справке. Там все описано. События загрузки описаны в Loader.load. Ну а у вас строчка ldr = new Loader() просто создает новый лоадер, который ничего не грузит (потому что не знает, что именно грузить). urlReq = ... тоже просто создает новый URLRequest, который ничего не делает (и не должен, может, вы его еще конфигурировать дальше будете).

Вам нужно еще добавить:
Код AS3:

ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ...);
ldr.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR ...);
ldr.load(urlReq);

В многоточиях - ваши обработчики ошибок загрузки картинки.

Пример по памяти написан, могут быть опечатки.

General303 21.06.2012 14:38

Я использовал пример из справочника
Код AS3:

import flash.display.*; 
import flash.net.URLRequest;
var rect:Shape = new Shape();
rect.graphics.beginFill(0xFFFFFF);
rect.graphics.drawRect(0, 0, 100, 100);
addChild(rect);
var ldr:Loader = new Loader();
ldr.mask = rect;
var url:String = "http://www.unknown.example.com/content.swf";
var urlReq:URLRequest = new URLRequest(url);
ldr.load(urlReq);
addChild(ldr);

Только переделал его чтобы картинка бралась из XML
Код AS3:

var rect:Shape = new Shape();
        rect.graphics.beginFill(0xFFFFFF);
        rect.graphics.drawRect(0, 0, 100, 100);
        addChild(rect);
        var ldr:Loader = new Loader();
        var xml:XML = XML(loader.data);
        var img:String = xml.img1;
        var urlReq:URLRequest = new URLRequest(img);
        ldr.load(urlReq);
        addChild(ldr);

Так все работает, но изображение создается отдельно в левом верхнем углу, то есть не в мувике

bav 21.06.2012 14:45

Добавляйте лоадер ребенком клипу, а не stage.
Код AS3:

myClip.addChild(ldr);


General303 21.06.2012 15:01

Оказывается удалил предпоследнюю строку с ldr.load(urlReq);
Заработало, всем большое спасибо за ответы.


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

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