0

所以我正在做一个项目,我已经创建了一个带有粒子的 3D 场景以及我需要的一切。我希望使用 PV3D2.0 LensFlare 类向场景中添加镜头光晕。我已经设置了所有的 lensflare 电影剪辑,我正在使用以下代码来实例化 LensFlare,但我收到了错误

TypeError: Error #1034: Type Coercion failed: cannot convert org.papervision3d.core.effects.objects::LensFlare@34723f41 to org.papervision3d.objects.DisplayObject3D.

var light:PointLight3D
var lf:LensFlare;
var h1:MovieClip = new HaloMC();
h1.filters = [new BlurFilter(4,4,2)];
var h2:MovieClip = new HaloMC2();
h2.filters = [new BlurFilter(4,4,2)];
var h3:MovieClip = new HaloMC5();
h3.filters = [new BlurFilter(4,4,2)];
var flArray:Array = [new MainFlareMC(), new HaloMC4(), h1, new FlareMC(), h2, new FlareMC(),h3, new FlareMC() ];
light = new PointLight3D(false);
light.x = 3000;
light.z = 10000;
lf = new LensFlare(light,flArray,viewport.width,viewport.height);
scene.addChild(lf);

我找到了 2008 年的 LensFlare 教程(我从中获得了数组和影片剪辑),但它与 Great White 不兼容,因此我尝试使用新的 API 重新创建它。

4

1 回答 1

1

根据Andy Zupko 的说法,您还需要将 RenderLayer 传递给构造函数。一旦 LensFlare 实例具有 RenderLayer,它将在那里渲染,因此您无需将其添加到场景中。

LensFlare不是DisplayObject3D,这就是您收到错误的原因。您不应该将其添加到场景中。创建实例后,只需使用updateFlare()方法进行更新,就可以了。

pv3d 镜头光晕

于 2010-09-10T21:05:03.680 回答