flex 结合sandy引擎创作 (1)
http://blog.csdn.net/hero82748274/archive/2009/01/22/3850800.aspx
之前利用flex创建一个立方体,但是还没有贴图,以及互动。在这里我们添加一些额外的操作,包括鼠标 和键盘的操作。以及换皮肤的功能。
一,创建了一个立方体后,在原有基础上,增加一个鼠标互动。
addEventListener(MouseEvent.MOUSE_WHEEL ,mouseWheel);
private function mouseWheel(event:MouseEvent):void
{
if (event.delta>0)
{
camera.z+=12;//向前滚动的时候向前滚动
} else
{
camera.z-=12;//向后滚动
}
}
使用鼠标滑轮让立方体产生一种透视的感觉,好像摄影机推镜和拉镜一样。
二,我们希望在程序加上键盘交互?
this.addEventListener(KeyboardEvent.KEY_DOWN,keydown);
ui.setFocus();
让立方体能够四个方向移动。左右前后
三,如何进行皮肤贴图?
我们希望为立方体创建贴图
[Embed(source="skin.jpg")]
[Bindable]
public var imgCls:Class;// 嵌入图片资源
private var bt:Bitmap=new imgCls() as Bitmap;
使用Embed外部嵌入一张名为skin.jpg的图片转换一个Class类。这样我们可以转换我们希望的位图类。
接下来,使用sandy类为我们提供的位图贴图材质,把我的之前转换的位图bt.bitmapData,作为参传递过去。
var material2:Material=new BitmapMaterial(bt.bitmapData);//创建图片贴图
app2=new Appearance(material2); //指定表面材质
四。如何进行换皮肤?
在程序里面放入一个combox
使用combox 选择我们的皮肤
<mx:ComboBox id="mycombox" change="seletSkin(event)" dataProvider="{myxml..myskin}" x="594" y="66"></mx:ComboBox>
利用combox选择来切换皮肤。
下面是最终的效果图
通过控制上 下 左右 已经鼠标的滚动 等就可以进行一些交互性的操作。
注意一点,由于combox会接收焦点,因此为了避免在使用键盘的时候发生错误,所以在combox的属性里面设置 不接收焦点
focusEnabled=false;
演示效果:在博客园的夏天的树人http://files.cnblogs.com/hero82748274/ddd.swf