[转] [Flash/Flex] 支持 Molehill版本的Flare3D 应用示范

[url]http://bbs.9ria.com/thread-79532-1-1.html[/url]


我已经看到很多使用Away3D新版本创建的Molehill 3D范例。但是还有很多其他的3D引擎也将支持Molehill啊。Flare3D就挺好,他们也发布了一个支持Molehill的预览版。这个引擎基于Argentina。下面的范例演示了如何动态加载位图到3D planes模型。它用到了TwitPic API。你输入Twitter ID,它会以3D显示显示这些照片。点击下面的图片来观看范例,再下面是源代码。


public class MoleTest extends Sprite
{

private var scene:Scene3D;
private var planes:Vector.<Plane> = new Vector.<Plane>();
private var shaders:Vector.<Shader3D> = new Vector.<Shader3D>();
private var numOfImages:int;
private var txt:Text;
private var images:XMLList;

public function MoleTest()
{
Security.allowDomain("s3.amazonaws.com");
Security.loadPolicyFile("s3.amazonaws.com/crossdomain.xml");
var it:InputText = new InputText(this, 50, 50, "leebrimelow");
it.setSize(130, 20);
addChild(it);
var butt:PushButton = new PushButton(this, 200, 50, "Submit", function():void {
getPics(it.text);
removeChild(butt);
removeChild(it);
});
addChild(butt);
}

private function setup3D():void
{
txt = new Text(this,375,280,"LOADING");
txt.setSize(50, 20);
addChild(txt);
scene = new Scene3D(this);
scene.addEventListener(Scene3D.COMPLETE_EVENT, completeEvent);
scene.addEventListener(Scene3D.UPDATE_EVENT, updateEvent);
scene.camera.setPosition(0, 0, -1500);

for(var i:int=0; i<numOfImages; i++)
{
var texture0:Texture3D = scene.addTextureFromFile("http://twitpic.com/show/full/"+images[i].short_id);
shaders[i] = new Shader3D("shader"+i);
shaders[i].twoSided = true;
shaders[i].layers.push(new TextureMapLayer(texture0));
shaders[i].build();
planes[i] = new Plane("plane"+i, images[i].width, images[i].height);
scene.addChild(planes[i]);
}
}

private function completeEvent(e:Event):void
{
removeChild(txt);
for(var i:int=0; i<numOfImages; i++)
{
planes[i].setMaterial(shaders[i]);
planes[i].x = Math.random()*2000-1000;
planes[i].y = Math.random()*2000-1000;
planes[i].z = Math.random()*2000-1000;
}
}

private function getPics(tname:String):void
{
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, function(e:Event):void {
var xml:XML = XML(loader.data);
images = xml.images.image;
numOfImages = images.length();
setup3D();
});
try {
// TwitPic has no cross-domain file so you will need to proxy it
loader.load(new URLRequest(YOUR_PHP_PROXY_SCRIPT));
}
catch(e:Error) {
trace(e.message);
}
}

private function updateEvent(e:Event):void
{
if ( Input3D.mouseDown )
{
scene.camera.rotateY(Input3D.mouseXSpeed, false, Vector3DUtils.ZERO );
scene.camera.rotateX(Input3D.mouseYSpeed, true, Vector3DUtils.ZERO );
}

scene.camera.translateZ( scene.camera.getPosition().length * Input3D.delta / 20 );

scene.defaultLight.rotateY( 2 );
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值