通常我们通过继承 Sprite,在起内部使用 ActionScript 来进行 Away3D 的三维创作。但有时我们需要把做好的 3d Sprite 嵌入到 Flex 页面中,那么可以进行如下操作。
1,Flex加载Away3D的Sprite方法与注意事项:
(1)Flex 版本要使用4。
(2)先在 Flex 页面中先添加个 UIComponent,再把 3D Sprite 的实例对象放到这个 UIComponent 里。
(3)Flex 页面的背景色设为透明(backgroundAlpha="0")。否则加载进来也是显示一片空白。
(4)Flex 默认的帧率24帧/秒。如果和制作的 Away3D 的 Sprite 帧率不一致的话,会造成显示效果的差异。Flex这边可以修改 MXML 页面的 frameRate 属性使其一致。
2,比如下面是一个3D Sprite(MyAway3DSprite.as)效果很简单,只是添加了个坐标轴。
package{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import away3d.containers.View3D;
import away3d.debug.Trident;
[SWF( frameRate="60", backgroundColor="#FFFFFF")]
public class MyAway3DSprite extends Sprite {
private var _view3D:View3D;
public function MyAway3DSprite() {
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event):void{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
// 创建一个视口
_view3D = new View3D();
addChild(_view3D);
//添加 坐标系.
var trident:Trident = new Trident(150);
_view3D.scene.addChild(trident);
addEventListener(Event.ENTER_FRAME, _onEnterFrame);
}
/**
* 渲染视图
*/
private function _onEnterFrame(e:Event):void
{
_view3D.render();
}
}
}
3,Flex中的页面代码如下:
xmlns:mx="library://ns.adobe.com/flex/mx"
backgroundAlpha="0" frameRate="60"
creationComplete="init(event)" >
import mx.events.FlexEvent;
protected function init(event:FlexEvent):void
{
var main:MyAway3DSprite = new MyAway3DSprite();
container.addChild(main);
}
]]>
away3d|Away3D 在Flex中加载嵌入Away3D Sprite的例子
http://m.bbyears.com/flash/89922.html
推荐访问: