2013-11-21 97 views
0

我用非常绿的手指打字,所以请原谅。从示例中学习,我一直试图在ActionScript中加载和显示图像。这是我的工作对原来的例子:在ActionScript中加载和显示图像

... 
... 
var bmd2:BitmapData = bmd.clone(); 
var infoBM:Bitmap = new Bitmap(bmd2); 
var back:MovieClip = new MovieClip(); 
back.name = "back"; 
back.rotationX = -90; 
var bSurface:MovieClip = new MovieClip(); 
bSurface.y = int(... 
bSurface.z = int(... 
bSurface.addChild(infoBM); 

var overlay:Sprite = new Sprite(); 
overlay.graphics.beginFill(...); 
overlay.graphics.drawRect(0, 0, bSurface.width, bSurface.height); 
overlay.graphics.endFill(); 
bSurface.addChild(overlay); 
back.addChild(bSurface); 

var tf:TextField = new TextField(); 
tf... 
tf... 
tf... 
bSurface.addChild(tf); 
... 
... 

我试图将图像放置到bSurface而不是文本块,如上面。到目前为止,我想出了:

var iSprite:Sprite = new Sprite(); 
var iMatrix:Matrix = new Matrix(); 
var bmData:BitmapData; 
bmData = new BitmapData(surface.width, surface.height, true, 123); 

var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 
loader.load(new URLRequest("c:\pixlr.png")); 
function onComplete (event:Event):void 
    { 
    bmData = Bitmap(LoaderInfo(event.target).content).bitmapData; 
    } 

iMatrix.tx = 0; 
iMatrix.ty = 0; 
iSprite.graphics.beginBitmapFill(bmData, iMatrix, false, true); 
iSprite.graphics.drawRect(0, 0, surface.width, surface.height); 
iSprite.graphics.endFill(); 

surface.addChild(iSprite); 

...和:

var bmData:BitmapData; 
bmData = new BitmapData(surface.width, surface.height, true, 123); 


var loader:Loader = new Loader(); 
var location:URLRequest = new URLRequest("c:\pixlr.png"); 
loader.load(location); 
bmData = Bitmap(loader.content).bitmapData; 

surface.addChild(bmData); 

但没有成功。我几天来一直在悲惨地失败,并且非常感谢一些帮助。

请多关照,

索非亚

回答

1

你让这个复杂得多,它需要的。一个Loader是一个DisplayObject。所以,当你想加载图像,你可以简单地这样做:

var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 
loader.load(new URLRequest("c:\pixlr.png")); 
addChild(loader); 

可以使用的onComplete事件处理任何大小调整或定位,或者在你的衰落可能想这样做。

+0

你好整形外科医生,谢谢你的解决方案;它完美地工作。但是,我必须将图像文件放在同一个目录中才能使用;有什么理由为什么文件路径会失败?此外,即使没有事件侦听器,您的示例也能正常工作。那是什么,并且在没有它的情况下使用装载机是否安全?再一次,非常感谢你。重要的是,它现在起作用 - 经过许多无用的,艰苦的试验和错误无知的小时。 – iSofia

+0

1.图像路径为“C:\ pixlr.png” - 您在上面的代码中指定了该路径。您可以使用绝对路径或相对路径。 2.事件监听器不是必需的。它会告诉你图像何时加载,这样你就不会在它出现之前对它进行调用,并且还可以让它在加载后做一些事情,例如淡入。 –

+0

你简直太棒了。底线是你解决了我几天未能成功挣扎的问题,为此,我衷心地感谢你。 – iSofia