PDA

Просмотр полной версии : Loader не реанирует на события


Гробовщик
03.04.2007, 11:26
Сначала я думал может я где-то накосячил. Но потом просто взял и скоприровал пример из лайв доков. В as файл.


package {
import flash.util.trace;
import flash.display.Sprite;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.*;

public class LoaderExample extends Sprite {
private var url:String = "Image.png";

public function LoaderExample() {
var loader:Loader = new Loader();
configureListeners(loader);

var request:URLRequest = new URLRequest(url);
loader.load(request);


}

private function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(Event.INIT, initHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener(Event.UNLOAD, unLoadHandler);
dispatcher.addEventListener(MouseEvent.CLICK, clickHandler);
}

private function completeHandler(event:Event):void {
addChild(loader);
trace("completeHandler: " + event);
}

private function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
}

private function initHandler(event:Event):void {
trace("initHandler: " + event);
}

private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}

private function openHandler(event:Event):void {
trace("openHandler: " + event);
}

private function progressHandler(event:ProgressEvent):void {
trace("progressHandler bytesLoaded: " + event.bytesLoaded + " bytesTotal: " + event.bytesTotal);
}

private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}

private function unLoadHandler(event:Event):void {
trace("unLoadHandler: " + event);
}

private function clickHandler(event:MouseEvent):void {
var loader:Loader = Loader(event.target);
trace("clickHandler");
loader.unload();
}
}
}

только addChild(loader); перенес в обработчик события completeHandler. И ни одно из событий не произошло.

BlooDHounD
03.04.2007, 13:53
он и не должен реагировать. Help вам в руки.

loader.contentLoaderInfo

etc
03.04.2007, 15:20
А где у тебя loader объявлен в completeHandler?

Гробовщик
03.04.2007, 15:44
___etc, да это ошибка,не досмотрел когда переносил, ну давайте я закаментровал эту строку с addChild.
package {
import flash.util.trace;
import flash.display.Sprite;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.*;

public class LoaderExample extends Sprite {
private var url:String = "Image.png";

public function LoaderExample() {
var loader:Loader = new Loader();
configureListeners(loader);

var request:URLRequest = new URLRequest(url);
loader.load(request);


}

private function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(Event.INIT, initHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener(Event.UNLOAD, unLoadHandler);
dispatcher.addEventListener(MouseEvent.CLICK, clickHandler);
}

private function completeHandler(event:Event):void {
//addChild(loader);
trace("completeHandler: " + event);
}

private function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
}

private function initHandler(event:Event):void {
trace("initHandler: " + event);
}

private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}

private function openHandler(event:Event):void {
trace("openHandler: " + event);
}

private function progressHandler(event:ProgressEvent):void {
trace("progressHandler bytesLoaded: " + event.bytesLoaded + " bytesTotal: " + event.bytesTotal);
}

private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}

private function unLoadHandler(event:Event):void {
trace("unLoadHandler: " + event);
}

private function clickHandler(event:MouseEvent):void {
var loader:Loader = Loader(event.target);
trace("clickHandler");
loader.unload();
}
}
}
Тепрь картинка не должа отображаться, но трэсы то выводиться должны?? Суть в том что он не реагирует на собтия.
BloodHounD, не стоит так просто. Хэлп у меня есть и я его читал. Но на oader.contentLoaderInfo обработчик вешается во время наступления события Event.INIT, а как это сделать если не реагирует на события лоадер?

etc
03.04.2007, 16:15
Уж не знаю, где ты этот пример откопал, он неправильный.

package {
import flash.display.Sprite;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.*;

public class LoaderExample extends Sprite {
private var url:String = "Image.png";

public function LoaderExample() {
var loader:Loader = new Loader();
configureListeners(loader.contentLoaderInfo);
var request:URLRequest = new URLRequest(url);
loader.load(request);
}

private function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(Event.INIT, initHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener(Event.UNLOAD, unLoadHandler);
dispatcher.addEventListener(MouseEvent.CLICK, clickHandler);
}

private function completeHandler(event:Event):void {
addChild(event.target.loader as Loader);
trace("completeHandler: " + event);
}

private function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
}

private function initHandler(event:Event):void {
trace("initHandler: " + event);
}

private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}

private function openHandler(event:Event):void {
trace("openHandler: " + event);
}

private function progressHandler(event:ProgressEvent):void {
trace("progressHandler bytesLoaded: " + event.bytesLoaded + " bytesTotal: " + event.bytesTotal);
}

private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}

private function unLoadHandler(event:Event):void {
trace("unLoadHandler: " + event);
}

private function clickHandler(event:MouseEvent):void {
var loader:Loader = Loader(event.target);
trace("clickHandler");
loader.unload();
}
}
}

Гробовщик
03.04.2007, 19:01
Это из лайв доков, которые я выкачал еще давно, как они появились,но я смотрю они очень старые. Так как там некоторые функции которые переименовали называются по старому и примеры неверные....некоторые...ладно, спасибо за помощь.