我不明白。HitTest是非常基本的,但它不会工作。我希望我的电影剪辑下降到hitTest Touch1,但我得到了错误1061。当我对hitTest Touch1做fallerThingsLeft告诉我在score_txt上“命中”的时候,我想我已经完成了,但它告诉我在它真正命中前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"
}
}发布于 2014-04-19 00:58:40
在没有看到对象的情况下,我不能确定;然而,在开始使用hitTestObject时,一个常见的问题是理解命中测试是在边界框上执行的。请参见下图。这将向hitTestObject注册一个' hit‘,因为边界框通过了hit测试。

https://stackoverflow.com/questions/23143317
复制相似问题