读书人

监听Image 动态加载的完成加入克

发布时间: 2012-11-09 10:18:48 作者: rapoo

监听Image 动态加载的完成,加入克效果

需求:加片 Image后,使用 克 特效。

:new Image 后,上取不到片,法做克理,需要等待片加完成.

?

直接使用如下代的,取不到片.

private function init():void{var image:Image = new Image();image.source = "image/water.jpg";addChild(image);trace(image.width + ":" + image.height);}

?果示 0:0

?

需要等待片加完成后,才可以取得到,於是修改

private function init():void{var image:Image = new Image();image.source = "image/water.jpg";image.addEventListener(Event.COMPLETE, complete);addChild(image);trace(image.width + ":" + image.height);}private function complete(event:Event):void {var image:Image = event.target as Image;trace(image.width + ":" + image.height);}

?果仍然示 0:0

?

搞不明白那Event.COMPLETE,到底嘛去了。

?

於是花我大量,一番底研究(google了半小),於,不能Event.COMPLETE,正的做法是 Event.RESIZE

代修改如下:

private function init():void{var image:Image = new Image();image.source = "image/water.jpg";image.addEventListener(Event.RESIZE, complete);addChild(image);}private function complete(event:Event):void {var image:Image = event.target as Image;trace(image.width + ":" + image.height);}

?果示 502:750

?

取到大小了。片是加完了。

?

接下需要做的是,片加上克效果:

private function init():void{var image:Image = new Image();image.source = "image/water.jpg";image.addEventListener(Event.RESIZE, complete);addChild(image);}private function complete(event:Event):void {var image:Image = event.target as Image;trace(image.width + ":" + image.height);var bmpData:BitmapData = DisplayObjectFilter.mosaicFilter2( image, 0.2 );var bmp:Bitmap = new Bitmap( bmpData );var image2:Image = new Image();image2.source = bmp;removeChild(image);addChild(image2);}

?行果 502:750, 片的大小是可以到了,但是加入克效果的片有示,或示空。

?

猜可能是片的 容 入。於是著的事件看看,后使用Event.RENDER,可以使片示,但是片大小值,仍然 0:0,而且在加入克效果,有常,查看后常是 片大小 0:0 引起的。

?

private function init():void{var image:Image = new Image();image.source = "image/water.jpg";image.addEventListener(Event.RENDER, render);addChild(image);}private function render(event:Event):void {var image:Image = event.target as Image;trace("render:" + image.width + ":" + image.height);var bmpData:BitmapData = DisplayObjectFilter.mosaicFilter2( image, 0.2 );var bmp:Bitmap = new Bitmap( bmpData );var image2:Image = new Image();image2.source = bmp;removeChild(image);addChild(image2);}

?

行果:

render:0:0
ArgumentError: Error #2015: 无效的 BitmapData。
?at flash.display::BitmapData()
?at cn.riahome.filters::DisplayObjectFilter$/mosaicFilter2()[E:\pengranxiang\flex_workspace\Demo\src\cn\riahome\filters\DisplayObjectFilter.as:212]
?at Demo/render()[E:\pengranxiang\flex_workspace\Demo\src\Demo.mxml:47]

?

停掉程序后,面上有加上克效果的片出。不停掉程序的,面一直卡住,看不到片。

查后常由於 片的大小 0:0 引起。所以修改如下:

<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"    minWidth="350"   minHeight="136"    backgroundColor="#ffffff"    creationComplete="init();"><mx:Script><![CDATA[import cn.riahome.filters.DisplayObjectFilter;import mx.controls.Image;private function init():void{var image:Image = new Image();image.source = "image/water.jpg";image.addEventListener(Event.RESIZE, complete);addChild(image);}private function complete(event:Event):void {var image:Image = event.target as Image;trace(image.width + ":" + image.height);image.addEventListener(Event.RENDER, render);}private function render(event:Event):void {var image:Image = event.target as Image;trace("render:" + image.width + ":" + image.height);var bmpData:BitmapData = DisplayObjectFilter.mosaicFilter2( image, 0.2 );var bmp:Bitmap = new Bitmap( bmpData );var image2:Image = new Image();image2.source = bmp;removeChild(image);addChild(image2);}]]></mx:Script></mx:Application>

?改以上代后,程序行正常,克效果片示正常。

监听Image 动态加载的完成,加入克成效

?

便一下克理用的片理的包, 很好用, 有用法例和源代。

是源包

是用法教程?

读书人网 >图形图像

热点推荐