/** * rev2600 で修正済み * http://www.libspark.org/changeset/2600 */ /** * BetweenAS3 fp10 rev2505 クラッシュレポート * Papervision3D の object を動かそうとするとエラー吐くます :-( * * TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 * at org.libspark.betweenas3.targets.single.display::DisplayObjectTweenTarget/setDestinationValue() * at org.libspark.betweenas3.factories::StandardSingleTweenTargetFactory/create() * at org.libspark.betweenas3::BetweenAS3$/tween() * at Main/initialize() */ package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageQuality; import flash.display.StageScaleMode; import flash.events.Event; import com.flashdynamix.utils.SWFProfiler; import org.libspark.betweenas3.BetweenAS3; import org.libspark.betweenas3.easing.Sine; import org.papervision3d.cameras.Camera3D; import org.papervision3d.lights.PointLight3D; import org.papervision3d.materials.shadematerials.FlatShadeMaterial; import org.papervision3d.materials.shadematerials.GouraudMaterial; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.objects.primitives.Sphere; import org.papervision3d.render.LazyRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; [SWF(width=465, height=465, frameRate=30, backgroundColor=0xffffff)] /** * クラッシュレポートするよ。 */ public class Main extends Sprite { private var camera:Camera3D; private var light:PointLight3D; private var renderer:LazyRenderEngine; private var scene:Scene3D; private var viewport:Viewport3D; private var container:DisplayObject3D; /** * コンストラクタ */ public function Main() { addEventListener(Event.ADDED_TO_STAGE, initialize); } /** * 初期化とか */ private function initialize(evt:Event):void { removeEventListener(Event.ADDED_TO_STAGE, initialize); // もろもろセットアップ setup(); // Papervision3D をセットアップ setupPV3D(); // 動かすためのオブジェクト作る var mat:FlatShadeMaterial = new FlatShadeMaterial(light, 0xffdfdf, 0x3c3c3c); var obj:Sphere = new Sphere(mat, 200, 12, 9); // コンテナにつっこむ container.addChild(obj); // FIXME: ここでエラー吐いちゃう BetweenAS3.tween(obj, {$y: -1000}, null, 2, Sine.easeIn).play(); // レンダリング用にイベントを設定 addEventListener(Event.ENTER_FRAME, loop); } /** * もろもろセットアップ */ private function setup():void { stage.align = StageAlign.TOP_LEFT; stage.quality = StageQuality.HIGH; stage.scaleMode = StageScaleMode.NO_SCALE; SWFProfiler.init(this); } /** * Papervision3D のセットアップ */ private function setupPV3D():void { // create camera. camera = new Camera3D(); // create light. light = new PointLight3D(); light.x = 1000; light.y = 1000; // create scene. scene = new Scene3D(); // create root container. container = new DisplayObject3D(); scene.addChild(container); // create viewport. viewport = new Viewport3D(stage.stageWidth, stage.stageHeight, true); addChild(viewport); // create render engine. renderer = new LazyRenderEngine(scene, camera, viewport); } /** * ループ!! */ private function loop(evt:Event):void { renderer.render(); } } } BetweenAS3 Crash Report 1