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 AS3:无法访问空对象引用的属性或方法(尽管删除了事件侦听器)_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 AS3:无法访问空对象引用的属性或方法(尽管删除了事件侦听器)

Actionscript 3 AS3:无法访问空对象引用的属性或方法(尽管删除了事件侦听器),actionscript-3,flash,Actionscript 3,Flash,我正在AS3中编程一个2D侧面滚动平台。我有一个可以随播放器滚动的相机,虽然它保持在固定的高度 import flash.events.Event; import flash.geom.Rectangle; stage.addEventListener(Event.ENTER_FRAME, camera); function camera(evt:Event){ root.scrollRect = new Rectangle(player.x - stage.stageWidth/2, cam

我正在AS3中编程一个2D侧面滚动平台。我有一个可以随播放器滚动的相机,虽然它保持在固定的高度

import flash.events.Event;
import flash.geom.Rectangle;
stage.addEventListener(Event.ENTER_FRAME, camera);
function camera(evt:Event){
 root.scrollRect = new Rectangle(player.x - stage.stageWidth/2, camera1.y - stage.stageHeight/2, stage.stageWidth, stage.stageHeight);}
我已经编程了一个坑,如果玩家掉入坑中,它将在一个单独的画面上带玩家在屏幕上观看游戏。此函数用于从帧中删除所有事件侦听器

stage.addEventListener(Event.ENTER_FRAME, walls);

function walls(e:Event){
if (player.hitTestObject(Pit1)){
    stage.removeEventListener(KeyboardEvent.KEY_DOWN, keydown);
    stage.removeEventListener(KeyboardEvent.KEY_UP, keyup);
    stage.removeEventListener(Event.ENTER_FRAME, movement);
    stage.removeEventListener(Event.ENTER_FRAME, walls);
    stage.removeEventListener(Event.ENTER_FRAME, camera);
    gotoAndPlay("GameOver");
    }
}

但是,当我在屏幕上观看游戏时,我仍然收到相机的TypeError#1009。

您应该创建一个独特的函数来处理enterframe事件。刷新视图并在该唯一函数中测试碰撞:

/**
 * Init function, called at the end.
 */
function init()
{
    stage.addEventListener(Event.ENTER_FRAME, enterFrameEventHandler);
}

/**
 * Function that updates your camera
 */
function updateCamera()
{
    root.scrollRect = new Rectangle(player.x - stage.stageWidth/2, camera1.y - stage.stageHeight/2, stage.stageWidth, stage.stageHeight);
}

/**
 * Function that test your collisions.
 */
function testCollision()
{
    if (player.hitTestObject(Pit1))
    {
        stage.removeEventListener(KeyboardEvent.KEY_DOWN, keydown);
        stage.removeEventListener(KeyboardEvent.KEY_UP, keyup);
        stage.removeEventListener(Event.ENTER_FRAME, enterFrameEventHandler);
        gotoAndPlay("GameOver");
    }
}

/**
 * Unique function that manages enterframe events
 */
function enterFrameEventHandler(e:Event)
{
    // update camera position 
    updateCamera();        

    // test collision
    testCollision();

    // etc.
}

init();

确保在第一帧(或初始屏幕帧)之外实例化相机