首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

firefox下提示TypeError: Error #1034: 强制转换类型失败:无法将 org.papervision3d.object!该如何解决

2012-02-15 
firefox下提示TypeError: Error #1034: 强制转换类型失败:无法将 org.papervision3d.object!!!!!!问题:在i

firefox下提示TypeError: Error #1034: 强制转换类型失败:无法将 org.papervision3d.object!!!!!!
问题:在ie下一切正常,但是在firefox和其它浏览器下会出现下面这提示

TypeError: Error #1034: 强制转换类型失败:无法将 org.papervision3d.objects.primitives::Cube@bfc6859 转换为 org.papervision3d.objects.DisplayObject3D。

请高手帮忙看看,到底哪出问题了, 我分析了半天没明白。
下面是代码

package 
{
  import __AS3__.vec.*;
  import _home.*;
  import flash.display.*;
  import flash.events.*;
  import flash.system.*;
  import gs.*;
  import gs.easing.*;
  import org.papervision3d.lights.*;
  import org.papervision3d.materials.*;
  import org.papervision3d.materials.shadematerials.*;
  import org.papervision3d.materials.utils.*;
  import org.papervision3d.objects.*;
  import org.papervision3d.objects.primitives.*;
  import org.papervision3d.view.*;

  public class _home extends BasicView
  {
  private var cameraYaw:Number = 0;
  private var xCube:Cube;
  private var light:PointLight3D;
  public var homeEnter:MovieClip;
  private var cameraPitch:Number = 80;
  private var list:Vector.<DisplayObject3D>;
  public static const OBJ_MAX:int = 80;

  public function _home() : void
  {
  this.light = new PointLight3D();
  this.list = new Vector.<DisplayObject3D>(OBJ_MAX, true);
  this.init();
  return;
  }// end function

  override protected function onRenderTick(event:Event = null) : void
  {
  this.homeEnter.x = viewport.viewportWidth / 2 - this.homeEnter.width / 2;
  this.homeEnter.y = viewport.viewportHeight / 2 + 100;
  this.cameraYaw = this.cameraYaw + 0.8;
  if (this.cameraYaw > 360)
  {
  this.cameraYaw = 0;
  }
  if (this.cameraPitch == 180)
  {
  this.cameraPitch = this.cameraPitch - 0.5;
  }
  else
  {
  this.cameraPitch = this.cameraPitch + 0.5;
  }
  camera.orbit(this.cameraPitch, this.cameraYaw);
  renderer.renderScene(scene, camera, viewport);
  return;
  }// end function

  public function delAllEvent()
  {
  stopRendering();
  trace("Delete _home!");
  scene.removeChild(this.xCube);
  this.xCube = null;
  var _loc_1:int = 0;
  while (_loc_1 < OBJ_MAX)
  {
   
  scene.removeChild(this.list[_loc_1]);
  _loc_1++;
  }
  this.list = null;
  this.light = null;
  System.gc();
  return;
  }// end function

  private function hideBox()
  {
  var _loc_2:DisplayObject3D = null;
  TweenLite.to(this.xCube, 2.8, {rotationY:1500, rotationX:0});
  var _loc_1:int = 0;
  while (_loc_1 < OBJ_MAX)
  {
   
  _loc_2 = this.list[_loc_1];
  TweenLite.to(_loc_2, 0.8, {x:this.xCube.x, y:this.xCube.y, z:this.xCube.z, rotationZ:0, rotationY:0, rotationX:0, delay:_loc_1 * 0.02});


  _loc_1++;
  }
  return;
  }// end function

  public function ranBox()
  {
  var _loc_3:DisplayObject3D = null;
  TweenLite.to(this.xCube, 0.8, {rotationY:2500, rotationX:80});
  var _loc_1:uint = 5000;
  var _loc_2:int = 0;
  while (_loc_2 < OBJ_MAX)
  {
   
  _loc_3 = this.list[_loc_2];
  TweenLite.to(_loc_3, 0.6, {x:_loc_1 * Math.random() - _loc_1 / 2, y:_loc_1 * Math.random() - _loc_1 / 2, z:_loc_1 * Math.random() - _loc_1 / 2, rotationX:360 * Math.random(), rotationY:360 * Math.random(), rotationZ:360 * Math.random(), delay:_loc_2 * 0.001});
  _loc_2++;
  }
  return;
  }// end function

  public function init() : void
  {
  var _loc_6:Cube = null;
  this.homeEnter.alpha = 0;
  var _loc_1:* = new FlatShadeMaterial(this.light, 16777215, 6710886);
  var _loc_2:uint = 3000;
  var _loc_3:int = 0;
  while (_loc_3 < OBJ_MAX)
  {
   
  _loc_6 = new Cube(new MaterialsList({all:_loc_1}), 30, 30, 30, 1, 1, 1);
  _loc_6.x = _loc_2 * Math.random() - _loc_2 / 2;
  _loc_6.y = _loc_2 * Math.random() - _loc_2 / 2;
  _loc_6.z = _loc_2 * Math.random() - _loc_2 / 2;
  _loc_6.rotationX = 360 * Math.random();
  _loc_6.rotationY = 360 * Math.random();
  _loc_6.rotationZ = 360 * Math.random();
  this.list[_loc_3] = scene.addChild(_loc_6);
  _loc_3++;
  }
  var _loc_4:* = this.list[Math.random() * this.list.length | 0];
  var _loc_5:* = new BitmapAssetMaterial("map");
  new BitmapAssetMaterial("map").smooth = true;
  this.xCube = new Cube(new MaterialsList({all:_loc_5}), 200, 200, 200, 1, 1, 1);
  this.xCube.rotationX = Math.random() * 180 - 90;
  this.xCube.rotationY = Math.random() * 180 - 90;
  this.xCube.rotationZ = Math.random() * 180 - 90;
  scene.addChild(this.xCube);
  this.xCube.x = 1000;
  TweenLite.to(this.xCube, 0.6, {x:0, rotationZ:-60, rotationY:-60, rotationX:-60});
  TweenLite.to(camera, 0.7, {focus:15, zoom:30});
  camera.target = this.xCube;
  startRendering();
  this.xCube.alpha = 0;
  TweenLite.delayedCall(3.5, this.hideBox);
  TweenLite.delayedCall(5.5, this.showXbox);
  return;
  }// end function

  private function showXbox()
  {
  TweenLite.to(this.xCube, 1.2, {rotationY:1900, rotationX:60, overwrite:true});
  TweenLite.to(camera, 1, {focus:20, zoom:35, ease:Expo.easeInOut});
  TweenLite.to(this.homeEnter, 1, {alpha:1});
  return;
  }// end function

  }
}


[解决办法]
把firefox对应的flash player插件升级成最新再试试。
因为IE和firefox的flash player不是同一个插件,感觉这种问题不像是代码的问题,环境因素可能性更大

热点排行