хиттест не работает

Я не понимаю. HitTest довольно простой, но он не будет работать. Я хочу, чтобы мой мувиклип Faller попал в Test Touch1, но я получаю ошибку 1061. Я думал, что сделал это, когда я сделал fallerThingsLeft to hitTest Touch1, чтобы сказать мне «HIT» в score_txt, но он сообщает мне Hit примерно за 3 секунды до того, как он действительно попадет. Я не понимаю. кто-нибудь может сказать мне, что я делаю неправильно

import flash.display.Graphics;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
var objectSpawner: Timer;
var fallers: Array;


function initGame(): void {
    fallers = [];
    objectSpawner = new Timer(1000);
    objectSpawner.addEventListener(TimerEvent.TIMER, createEnemy);
    objectSpawner.start();
    addEventListener(Event.ENTER_FRAME, dropEnemies);
}
function createEnemy(e: TimerEvent): void {
    var enemy: Faller = new Faller();
    enemy.y = -stage.stageHeight;
    enemy.x = Math.random() * 380;
    MovieClip(enemy).cacheAsBitmap = true;
    addChild(enemy);
    fallers.push(enemy);
    drawConnectors();
}
function dropEnemies(e: Event): void {
    trace(fallers.length);
    for each(var mc: Faller in fallers) {
    mc.y += 10;
    if (mc.y > stage.stageHeight * 2)
        fallers.splice(fallers.indexOf(removeChild(mc)), 1);

    drawConnectors();
    }
}
function drawConnectors(): void {
    if (fallers.length == 0) return;
    var g: Graphics = this.graphics;
    g.clear();
    g.lineStyle(10,0xFFFFFF);
    var mc: Faller = fallers[0];
    g.moveTo(mc.x, mc.y);
    for each(mc in fallers) g.lineTo(mc.x, mc.y);


}

init()


function init():void
{
          var fallingThingsLeft:FallingThings = new FallingThings
          (stage.stageWidth / 2, stage.stageHeight);
          var fallingThingsRight:FallingThings = new FallingThings
          (stage.stageWidth / 2, stage.stageHeight);
          addChild(fallingThingsLeft);
          addChild(fallingThingsRight);
          fallingThingsRight.x = stage.stageWidth / 2;




    }

import flash.events.Event;

this.addEventListener( Event.ENTER_FRAME, handleCollision)

function handleCollision( e:Event ):void
{
    if(fallingThingsLeft.hitTestObject(Touch1))
       {
           output_txt.text = "HIT"
       }
       else
       {
           output_txt.text = "MISS"
       }
}

person user3529507    schedule 17.04.2014    source источник
comment
Я тоже не понимаю, код, который вы показываете, нигде не имеет hitTest.   -  person TreeTree    schedule 18.04.2014
comment
упс! теперь он там!   -  person user3529507    schedule 18.04.2014


Ответы (1)


Не видя объектов, я не могу быть уверен; однако распространенной проблемой при начале работы с hitTestObject является понимание того, что тест на попадание выполняется в ограничивающей рамке. См. изображение ниже. Это зарегистрирует «попадание» с помощью hitTestObject, потому что ограничивающие рамки проходят тест на попадание.

введите здесь описание изображения

person scottysmalls    schedule 18.04.2014