【问题标题】:hitTest not working命中测试不起作用
【发布时间】:2014-04-17 20:57:54
【问题描述】:

我不明白。 HitTest 非常基础,但它不起作用。我想让我的电影剪辑 Faller 击中测试 Touch1,但我收到错误 1061。当我使用 fallerThingsLeft 击中测试 Touch1 告诉我 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"
       }
}

【问题讨论】:

  • 我也不明白,你显示的代码在任何地方都没有hitTest
  • 哎呀!现在它在那里!

标签: actionscript-3 flash hittest


【解决方案1】:

没有看到物体,我无法确定;但是,开始使用 hitTestObject 时的一个常见问题是了解命中测试是在边界框上执行的。见下图。这将使用 hitTestObject 注册一个“命中”,因为边界框通过了命中测试。

【讨论】:

    猜你喜欢
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多