如何将图片加载进swf
使用位图文件材质(BitmapFilematerial)将图片贴到平面的时候,我们将会看到效果。不过大家有没有注意到,当我们将生成的运行文件swf拷贝到另外一个地方,打开时却不能显示图片。
如何解决这个问题呢?可以使用Embed。Embed在Flash编译阶段就将资源嵌入,也就是说图片资源是会被编译进swf文件里面去的,这样子的好处是代码比较简洁,使用方便,也不存在加载顺序的问题;缺点是会增大swf文件的体积。
下面来看代码。
代码清单1
package
{
import flash.events.Event;
import mx.core.BitmapAsset;
import org.papervision3d.materials.BitmapMaterial;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.view.BasicView;
/**
* ...
* @author yl
*/
public class ShowPlane extends BasicView
{
//定义一个平面变量
private var plane:Plane;
//嵌入图片1.jpg到swf,定义一个类Pic,它和我们的图片1.jpg关联
[Embed(source ="../assets/1.jpg")] private var Pic:Class;
public function ShowPlane()
{
//创建图片,并将其转换为位图元件类(BitmapAsset)
var pic:BitmapAsset =new Pic() as BitmapAsset;
//依据位图元件类创建位图材质
var m1:BitmapMaterial =new BitmapMaterial(pic.bitmapData);
plane = new Plane(m1,500, 500, 10, 10);
scene.addChild(plane);
plane.material.doubleSided = true;
startRendering();
}
override protected function onRenderTick(e:Event =null):void {
super.onRenderTick();
plane.rotationY += 3;
}
}
}