flash 3d flash3d 研究所 pv3d 共享资源  | 经典范例  | 视频教程  | 友情链接  | 联系我们
登陆 | 注册  flash 3d 研究所
讨论区





最近更新:
● ck47阁下在讨论区里 发表新主题“新手问题...”(07:49:50)
● 无语瓶阁下在教程区里 回复“《超简易papervision3D基础 ...”(18:09:44)
● payday loan阁下在教程区里 回复“《pv3d, sandy, away3d...”(05:56:23)
浏览主题:关于pv3d用movieMaterial显示外部swf的问题,求救!!!

关于pv3d用movieMaterial显示外部swf的问题,求救!!!
san0072 (2009-01-16 15:39:40)

下面的代码加载了外部的一个播放器,我用movieMaterial显示出来了,但播放器里面的事件全部失效了,我知道movieMaterial会使一些组件失效,但不知道怎么解决这个问题。不知道哪位可以帮到我,感激....
package {

import flash.system.*;
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import flash.geom.*;
import org.papervision3d.*;
import org.papervision3d.cameras.*;
import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.materials.*;
import org.papervision3d.materials.utils.*;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.objects.*;
 
public class FlashItem extends Sprite
{
  private var loaderContext : LoaderContext;
  private var swf : Loader;
  private var scene:Scene3D = new Scene3D();
  private var camera:Camera3D = new Camera3D();
  private var viewport:Viewport3D;
  private var renderer:BasicRenderEngine = new BasicRenderEngine();
  private var bitmapData:BitmapData;

  public function FlashItem()
  {
    init();
  }

private function init():void
{
  stage.align = StageAlign.TOP_LEFT;
  stage.scaleMode = StageScaleMode.NO_SCALE;
  Security.allowDomain("*");
  loaderContext = new LoaderContext(true);
  viewport = new Viewport3D(stage.stageWidth, stage.stageHeight, true, true);
  addChild(viewport);
  camera.z = 10;
  camera.x= 0;
  camera.zoom = 6;
  camera.rotationY = 0;

  swf = new Loader();
  var req:URLRequest = new URLRequest("http://www.youtube.com/v/4sEih7cISU8&hl=zh_CN&fs=1");
  swf.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);    
  swf.load(req,loaderContext);
  stage.addEventListener(Event.ENTER_FRAME, render3D);
}
private function swfLoaded(evt:Event) : void
{
  swf.blendMode = BlendMode.LAYER;
  var movieMaterial:MovieMaterial = new MovieMaterial(swf, false, true, true, new Rectangle(0, 0, 500, 400));
  movieMaterial.fillColor = 16777215;//16777215
  movieMaterial.smooth = true;
  movieMaterial.interactive = true;
  var plane : Plane = new Plane(movieMaterial, 500, 400, 1, 1);
  plane.x = 10;
  plane.z = 50;
  plane.rotationY = 0;
  plane.y = 0;
  scene.addChild(plane);    
}// end function
private function render3D(e:Event):void
{  
renderer.renderScene(scene, camera, viewport);
}
}
}


flash 3d 研究所 san0072
(2009-01-16 16:29:15)
发现返回来的swf是个AVM1Movie 对象,AVM1Movie 好像无法强制转成MovieClip,这下该咋办啊!!!!

flash 3d 研究所 fur3
(2009-01-16 20:25:00)
试试UIComponent贴图吧,能够解决一些Flex的组件,flash的组件暂时还比较麻烦,需要自己写。

flash 3d 研究所 fur3
(2009-01-16 20:25:32)
swf直接父级给某个movieclip就可以了吧

flash 3d 研究所 san0072
(2009-01-17 09:53:09)
谢谢fur3的提示,swf.parent 确实是个MovieClip 对象,但是
var movieMaterial:MovieMaterial = new MovieMaterial(swf.parent , false, true, true, new Rectangle(0, 0, 500, 400));
这样写效果也是一样。不过我不明白你说的
UIComponent,它是个继承Sprite的flex组件吧,用它做贴图应该放到哪去啊,scene.addChild的参数是DisplayObject3D对象啊,Plane传进去的参数是个MaterialObject3D 对象,我应该怎么做呢,指教下啦!!

flash 3d 研究所 DDM君
(2009-01-17 11:57:02)
目前必须要自己做的按钮,拖动条什么的才能控制。

flash 3d 研究所 kevinwong
(2009-01-17 12:16:45)
away3d里面有个可以直接用flash component的MovieMaterial 等不及我们的功能 可以试着研究研究。
http://away3d.com/download/demos_2_2_0.zip


flash 3d 研究所 sunrain
(2009-05-15 15:33:54)
DDM君
您好,能否专门写一篇关于MovieMaterial使用案例专辑,这个类的例子很缺阿!

flash 3d 研究所 DDM君
(2009-05-15 17:49:39)
MovieMaterial是个很有创意的功能,这个论坛里有很多帖子都涉及到它的使用。你的建议很好,有空一定把它们整合起来。

评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了