나는 생성자가 문자열 (내 디렉토리의 이미지 즉, jpg)을 인수로 취하고 메모리의 로더 객체를 통해 해당 이미지를로드하는 클래스를 작성하려고한다. 또한 다른 클래스에서 사용하기 위해 getBitmapFromLoader() 함수를 사용하여 로더의 비트 맵을 가져 왔습니다.이벤트 처리기에서 값을 반환 할 수 있습니까?
public class LoadImage extends Loader
{
private var bitmap:Bitmap;
private var ldr:Loader;
public function LoadImage(nameURL:String):void
{
trace("LoadImage constructor");
ldr = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorEventHandler);
var request:URLRequest = new URLRequest(nameURL);
ldr.load(request);
}
/* methods */
public function getBitmapFromLoader():Bitmap
{
return bitmap;
}
public function toSprite():Sprite
{
trace("toSprite method");
var sprite:Sprite = new Sprite();
sprite.addChild(bitmap);
return sprite;
}
public function toMovieClip():MovieClip
{
trace("toMovieClip method");
var mvc:MovieClip = new MovieClip();
mvc.addChild(bitmap);
return mvc;
}
private function completeHandler(event:Event):void
{
trace("completeHandler " + event.currentTarget);
bitmap = new Bitmap();
bitmap = Bitmap(event.currentTarget.content);
}
private function ioErrorEventHandler(event:IOErrorEvent):void
{
trace("ioErrorEventHandler " + event.currentTarget);
trace("error on loading image: " + event.currentTarget.url);
bitmap = null;
}
}
}
하지만 작동하지 않습니다. 이것은 내가 메인 클래스에서 사용하는 방법입니다 Main constructor LoadImage constructor toSprite method TypeError: Error #2007: Parameter child must be non-null. at flash.display::DisplayObjectContainer/addChild() at loader::LoadImage/toSprite() at Main() completeHandler [object LoaderInfo]
: 이 무엇 플래시 출력입니다 package { import loader.*;
import flash.display.MovieClip;
import flash.display.Sprite;
public class Main extends MovieClip
{
/* properties */
/* constructor */
public function Main():void
{
trace("Main constructor");
var imgLdr:LoadImage = new LoadImage("smile_bg.jpg");
var spr1:Sprite = imgLdr.toSprite();
//this.width = spr1.width;
//this.height = spr1.height;
this.addChild(spr1);
}
/* methods */
}
}
가 "작동하지 않습니다", 또한 되돌아 가서 이전 질문에 대한 답을 수락대로 표시하십시오! – grapefrukt
+1로 과거 답변을 표시합니다. 시스템을 의도 한대로 사용하면 훨씬 좋은 반응을 얻을 수 있습니다. –
을 보조 노트로 사용하면 LoadImage 클래스가 Loader를 확장 할 필요가 없거나 적어도 코드에서 상위 클래스의 이점을 취하지 않고있는 것 같습니다. – goliatone