Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 Away3D和BB剧本_Actionscript 3_Flash_Blackberry Playbook_Away3d - Fatal编程技术网

Actionscript 3 Away3D和BB剧本

Actionscript 3 Away3D和BB剧本,actionscript-3,flash,blackberry-playbook,away3d,Actionscript 3,Flash,Blackberry Playbook,Away3d,我正在移动Actionscript Flash Builder项目中使用Away3D框架,并尝试在我的bb playbook上调试/运行。当我通过FlashBuilder(不是BBPlaybook特有的)运行/调试时,一切都很好。当我尝试在实际设备上运行/调试时,我收到以下错误: TypeError:Error#1009:无法访问null的属性或方法 对象引用。 位于away3d.core.managers::Stage3DManager()[/Users/jesketing/Documents

我正在移动Actionscript Flash Builder项目中使用Away3D框架,并尝试在我的bb playbook上调试/运行。当我通过FlashBuilder(不是BBPlaybook特有的)运行/调试时,一切都很好。当我尝试在实际设备上运行/调试时,我收到以下错误:

TypeError:Error#1009:无法访问null的属性或方法 对象引用。
位于away3d.core.managers::Stage3DManager()[/Users/jesketing/Documents/adobeflashbuilder 4.6/3DMobile/src/away3d-core-fp11_4_0_9_gold(1)/src/away3d/core/managers/Stage3DManager.as:35]

位于away3d.core.managers::Stage3DManager$/getInstance()[/Users/jesketing/Documents/Adobe Flash Builder 4.6/3DMobile/src/away3d-core fp11_4_0_9_gold(1)/src/away3d/core/managers/Stage3DManager.as:45]

在away3d.containers::View3D/onaddedstatage()[/Users/jesketing/Documents/adobeflashbuilder 4.6/3DMobile/src/away3d-core-fp11_4_0_9_gold(1)/src/away3d/containers/View3D.as:762]

Main/setupScene中的flash.display::DisplayObjectContainer/addChild()([/Users/jesketing/Documents/Adobe flash Builder 4.6/3DMobile/src/Main.as:85]

at Main()[/Users/jesketing/Documents/adobeflashbuilder 4.6/3DMobile/src/Main.as:79]

我知道空对象引用意味着我需要声明/定义一个var,但由于应用程序在flashbuilder中运行得很好,我不明白

任何帮助都将不胜感激。我的代码如下

package{
import away3d.containers.View3D;
import away3d.entities.Mesh;
import away3d.events.MouseEvent3D;
import away3d.lights.DirectionalLight;
import away3d.materials.ColorMaterial;
import away3d.materials.SkyBoxMaterial;
import away3d.materials.lightpickers.StaticLightPicker;
import away3d.primitives.CubeGeometry;
import away3d.primitives.SphereGeometry;
import away3d.textures.BitmapCubeTexture;
import away3d.textures.BitmapTexture;

import flash.desktop.NativeApplication;
import flash.display.SimpleButton;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.*;
import flash.events.AccelerometerEvent;
import flash.geom.Vector3D;
import flash.sensors.Accelerometer;
import flash.text.*;


[SWF(width=1024, height=600, frameRate=60)]


public class Main extends Sprite{

    [Embed(source="dice.png")]
    private var Dice:Class;
    [Embed(source="alum-01.png")]
    private var Alum:Class;
    [Embed(source="bat-01.png")]
    private var Bat:Class;
    [Embed(source="brun-01.png")]
    private var Brun:Class;
    [Embed(source="julie-01.png")]
    private var Julie:Class;
    [Embed(source="slice-01.png")]
    private var Slice:Class;

    private var format:TextFormat;
    private var inst:TextField;

    private var myview:View3D = new View3D();;
    private var dice:Mesh;
    private var slice:Mesh;
    private var bat:Mesh;
    private var brun:Mesh;
    private var julie:Mesh;
    private var alum:Mesh;

    private var acc1:Accelerometer;
    private var acc2:Accelerometer;
    private var acc3:Accelerometer;

    private var knife:Mesh;

    public function Main(){
        super();

        // support autoOrients
        stage.align = StageAlign.TOP_LEFT;
        stage.scaleMode = StageScaleMode.NO_SCALE;

        format = new TextFormat();
        format.size = 26;
        format.color = 0xFFFFFF;
        inst = new TextField;

        inst.defaultTextFormat = format;
        inst.text = "Click on the cube you want to learn the cut of!"
        addChild(inst);
        inst.x = 250;
        inst.y = 300;
        inst.width = 500;
        setupScene();
    }

    private function setupScene():void{
        //adding the view for 3D
        //myview = new View3D();
        addChild(myview);

        var tdice:BitmapCubeTexture = new BitmapCubeTexture(new Dice().bitmapData,
            new Dice().bitmapData,
            new Dice().bitmapData,
            new Dice().bitmapData,
            new Dice().bitmapData,
            new Dice().bitmapData);

        var tslice:BitmapCubeTexture = new BitmapCubeTexture(new Slice().bitmapData,
            new Slice().bitmapData,
            new Slice().bitmapData,
            new Slice().bitmapData,
            new Slice().bitmapData,
            new Slice().bitmapData);

        var tbat:BitmapCubeTexture = new BitmapCubeTexture(new Bat().bitmapData,
            new Bat().bitmapData,
            new Bat().bitmapData,
            new Bat().bitmapData,
            new Bat().bitmapData,
            new Bat().bitmapData);

        var tbrun:BitmapCubeTexture = new BitmapCubeTexture(new Brun().bitmapData,
            new Brun().bitmapData,
            new Brun().bitmapData,
            new Brun().bitmapData,
            new Brun().bitmapData,
            new Brun().bitmapData);

        var tjulie:BitmapCubeTexture = new BitmapCubeTexture(new Julie().bitmapData,
            new Julie().bitmapData,
            new Julie().bitmapData,
            new Julie().bitmapData,
            new Julie().bitmapData,
            new Julie().bitmapData);

        var talum:BitmapCubeTexture = new BitmapCubeTexture(new Alum().bitmapData,
            new Alum().bitmapData,
            new Alum().bitmapData,
            new Alum().bitmapData,
            new Alum().bitmapData,
            new Alum().bitmapData);
        //making the shapes, adding cube to stage
        dice = new Mesh(new CubeGeometry(), new SkyBoxMaterial(tdice));
        myview.scene.addChild(dice);
        dice.x = -270;
        dice.y = 150;

        slice = new Mesh(new CubeGeometry(), new SkyBoxMaterial(tslice));
        myview.scene.addChild(slice);
        slice.x = 0;
        slice.y = 150;

        bat = new Mesh(new CubeGeometry(), new SkyBoxMaterial(tbat));
        myview.scene.addChild(bat);
        bat.x = 250;
        bat.y = 150;

        brun = new Mesh(new CubeGeometry(), new SkyBoxMaterial(tbrun));
        myview.scene.addChild(brun);
        brun.x = -270;
        brun.y = -150;

        julie = new Mesh(new CubeGeometry(), new SkyBoxMaterial(tjulie));
        myview.scene.addChild(julie);
        julie.x = 0;
        julie.y = -150;

        alum = new Mesh(new CubeGeometry(), new SkyBoxMaterial(talum));
        myview.scene.addChild(alum);
        alum.x = 270;
        alum.y = -150;

        //making the mouse work and click event on the cube
        dice.mouseEnabled = true;
        dice.addEventListener(MouseEvent3D.MOUSE_DOWN, function(event:MouseEvent3D):void{clickMe("Dice")});

        slice.mouseEnabled = true;
        slice.addEventListener(MouseEvent3D.MOUSE_DOWN, function(event:MouseEvent3D):void{clickMe("Slice")});

        julie.mouseEnabled = true;
        julie.addEventListener(MouseEvent3D.MOUSE_DOWN, function(event:MouseEvent3D):void{clickMe("Julienne")});

        bat.mouseEnabled = true;
        bat.addEventListener(MouseEvent3D.MOUSE_DOWN, function(event:MouseEvent3D):void{clickMe("Batonnet")});

        brun.mouseEnabled = true;
        brun.addEventListener(MouseEvent3D.MOUSE_DOWN, function(event:MouseEvent3D):void{clickMe("Brunoise")});

        alum.mouseEnabled = true;
        alum.addEventListener(MouseEvent3D.MOUSE_DOWN, function(event:MouseEvent3D):void{clickMe("Alumette")});

        knife = new Mesh(new CubeGeometry, new ColorMaterial(0xFF0000));

        //setting how you look at the view
        myview.camera.z = -500;
        myview.camera.lookAt(new Vector3D());

        //adding the enter frame event for spinning
        addEventListener(Event.ENTER_FRAME, loop);
    }

    private function loop(event:Event):void{

        //making the shapes rotate
        dice.rotationY++;
        slice.rotationY++;
        alum.rotationY++;
        julie.rotationY++;
        bat.rotationY++;
        brun.rotationY++;

        //rendering the view
        myview.render();
    }

    private function clickMe(cutPicked:String):void{

        switch(cutPicked){
            case "Dice":
                acc1.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate);
                myview.scene.removeChild(dice);
                myview.scene.removeChild(slice);
                myview.scene.removeChild(alum);
                myview.scene.removeChild(julie);
                myview.scene.removeChild(bat);
                myview.scene.removeChild(brun);
                removeChild(inst);

                myview.scene.addChild(knife);
                //knife.rotateTo(10,10,0);
                break;
            case "Chiffonade":
                //acc3.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate3);
                myview.scene.removeChild(dice);
                myview.scene.removeChild(slice);
                myview.scene.removeChild(alum);
                myview.scene.removeChild(julie);
                myview.scene.removeChild(bat);
                myview.scene.removeChild(brun);
                removeChild(inst);

                myview.scene.addChild(knife);
                knife.x = -75;
                break;
            case "Slice":
                //acc2.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate2);
                myview.scene.removeChild(dice);
                myview.scene.removeChild(slice);
                myview.scene.removeChild(alum);
                myview.scene.removeChild(julie);
                myview.scene.removeChild(bat);
                myview.scene.removeChild(brun);
                removeChild(inst);

                myview.scene.addChild(knife);
                knife.x = -75;
                break;
            case "Alumette":
                //acc2.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate2);
                myview.scene.removeChild(dice);
                myview.scene.removeChild(slice);
                myview.scene.removeChild(alum);
                myview.scene.removeChild(julie);
                myview.scene.removeChild(bat);
                myview.scene.removeChild(brun);
                removeChild(inst);

                myview.scene.addChild(knife);
                knife.x = -75;
                break;
            case "Batonnet":                    
                //acc2.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate2);
                myview.scene.removeChild(dice);
                myview.scene.removeChild(slice);
                myview.scene.removeChild(alum);
                myview.scene.removeChild(julie);
                myview.scene.removeChild(bat);
                myview.scene.removeChild(brun);
                removeChild(inst);

                myview.scene.addChild(knife);
                knife.x = -75;
                break;
            case "Julienne":
                //acc2.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate2);
                myview.scene.removeChild(dice);
                myview.scene.removeChild(slice);
                myview.scene.removeChild(alum);
                myview.scene.removeChild(julie);
                myview.scene.removeChild(bat);
                myview.scene.removeChild(brun);
                removeChild(inst);

                myview.scene.addChild(knife);
                knife.x = -75;
                break;
            case "Brunoise":
                //acc1.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate);
                myview.scene.removeChild(dice);
                myview.scene.removeChild(slice);
                myview.scene.removeChild(alum);
                myview.scene.removeChild(julie);
                myview.scene.removeChild(bat);
                myview.scene.removeChild(brun);
                removeChild(inst);

                myview.scene.addChild(knife);
                knife.x = -75;
        }

        knife.mouseEnabled = true;
        knife.addEventListener(MouseEvent3D.MOUSE_DOWN, up);
    }

    private function up(event:MouseEvent3D):void{
        if (Accelerometer.isSupported){
            acc1 = new Accelerometer();
            acc2 = new Accelerometer();
            acc3 = new Accelerometer();

            acc1.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate);
        }else{
            // Handle case when the accelerometer is not supported here
        }  
    }

    private function onAccUpdate(e:AccelerometerEvent):void{
        var threshold:Number = 2;
        if(e.accelerationY > threshold){
            knife.rotationX = 45;
            if(knife.rotationX == 45){
                knife.rotationX = -45;
            }
        }
        } 
    }   

}

我不认为BB Playbook的AIR版本支持Stage3D,上次我听说他们使用的是AIR 3.1。我读到他们计划用AIR 3.2或更高版本更新SDK,但不确定是否已经发生了这种情况。

如果您试图在便携式设备上调试,可能设备缺少要完成编译的资源?每次u在您的pc上编译所有可用资产可能您的设备在libstypeer之外丢失错误:错误#1009:无法访问空对象引用的属性或方法。这意味着引用该对象时该对象为空,与声明变量无关可能在发布时您应该在FB中使用“捕获打包”