У тебя вообще какая-то каша в коде. Я думал ты уже давно понял, что нейп - это чисто математика, он к дисплей листу вообще никакого отношения не имеет, и глупо искать у него каких-то родителей. У нейпа есть только пространство Space, в котором и происходят все вычисления.
Мне не понятны у тебя две вещи:
1) У тебя тело создается не в том объекте, к которому оно принадлежит что ли?
2) Почему ты не используешь для этого стандартные события нейпа? То, что у тебя сделано с событиями - это такой дикий костыль, что просто жесть)
Я делаю просто. У меня физическое тело персонажа создается в самом классе персонажа, которому оно принадлежит. А подписывается оно на события примерно так:
Вот метод из рабочей игры:

Код AS3:
protected function createPhysBody():void {
var bodyWidth: int = dip(70) * p_totalCharScale;
var bodyHeight: int = dip(25) * p_totalCharScale;
_physBody = new Body(BodyType.DYNAMIC);
_physBody.allowRotation = false;
_mainShape = new Polygon(
Polygon.regular(bodyWidth, bodyHeight, 4)
);
_mainShape.userData.object = this;
_mainShape.cbTypes.add(CallbackTypes.playerPhysCbType);
_physBody.shapes.add(_mainShape);
_physBody.mass = 30;
var shapeWidth:Number = bodyWidth * p_totalCharScale;
_feelerShape = new Polygon(
Polygon.rect( -p_hitZoneWidth * .5,
-p_hitZoneHeight * 2,
p_hitZoneWidth, p_hitZoneHeight)
);
_feelerShape.userData.object = this;
_feelerShape.sensorEnabled = true;
_feelerShape.cbTypes.add(CallbackTypes.heroSensorCbType);
_physBody.shapes.add(_feelerShape);
var enemyWeaponLis:InteractionListener = new InteractionListener(
CbEvent.BEGIN,
InteractionType.SENSOR,
CallbackTypes.heroSensorCbType,
CallbackTypes.enemyWeaponCbType,
onEnemyWeaponCollision
);
var inclineBeginLis:InteractionListener = new InteractionListener(
CbEvent.BEGIN,
InteractionType.SENSOR,
CallbackTypes.playerPhysCbType,
CallbackTypes.inclineCbType,
onInclineCollision
);
var inclineEndLis:InteractionListener = new InteractionListener(
CbEvent.END,
InteractionType.SENSOR,
CallbackTypes.playerPhysCbType,
CallbackTypes.inclineCbType,
onInclineCollision
);
// обработка лестниц
var ladderBeginLis:InteractionListener = new InteractionListener(
CbEvent.BEGIN,
InteractionType.SENSOR,
CallbackTypes.playerPhysCbType,
CallbackTypes.ladderCbType,
onLadderCollision
);
var ladderEndLis:InteractionListener = new InteractionListener(
CbEvent.END,
InteractionType.SENSOR,
CallbackTypes.playerPhysCbType,
CallbackTypes.ladderCbType,
onLadderCollision
);
var explosionListener:InteractionListener = new InteractionListener(
CbEvent.BEGIN,
InteractionType.SENSOR,
CallbackTypes.heroSensorCbType,
CallbackTypes.effectCbType,
onEffectCollision
);
// чтобы потом было проще удалять все слушатели циклом, или добавлять их в Space
_listeners.push(
enemyWeaponLis,
inclineBeginLis,
inclineEndLis,
explosionListener,
ladderBeginLis,
ladderEndLis
);
}
Все типы колбэков нейпа занесены в статические константы, и доступны по все игре

Код AS3:
package {
import nape.callbacks.CbType;
public class CallbackTypes {
public static const enemyCbType: CbType = new CbType();
public static const enemyPhysCbType: CbType = new CbType();
public static const npcCbType: CbType = new CbType();
public static const obstacleCbType: CbType = new CbType();
public static const playerSensorCbType: CbType = new CbType();
// это для проверок типа вижу / не вижу
public static const playerPhysCbType: CbType = new CbType();
public static const bulletCbType: CbType = new CbType();
public static const effectCbType: CbType = new CbType();
public static const feelerCbType: CbType = new CbType();
public static const inclineCbType: CbType = new CbType();
public static const ladderCbType: CbType = new CbType();
public static const roomKeyCbType: CbType = new CbType();
public static const enemyWeaponCbType: CbType = new CbType();
public static const wallCbType: CbType = new CbType();
public function CallbackTypes() {
}
}
}
То есть если создается тело оружия врага, то ему добавляется колбэк enemyWeaponCbType,
и, свой персонаж уже сможет определить, что он столкнулся с оружием врага, к примеру.
Ну и наконец обработчик столкновения с оружием врага

Код AS3:
private function onEnemyWeaponCollision(collision:InteractionCallback):void {
if (_dead || _immortal || _isFalling || _isJumping) return;
var shape1: Shape = collision.int1.castShape;
if (shape1.userData.object == this) {
var hitterBody: Body = collision.int2.castBody;
if (hitterBody.userData.object is ColdWeaponPhysicsBase) {
var coldWeapon:ColdWeaponPhysicsBase = hitterBody.userData.object as ColdWeaponPhysicsBase;
if (coldWeapon.backsOff) {
// нужно ли отбрасывать ударом?
//backOff(dip(70));
}
if (coldWeapon.falls) {
var direction:int = hitterBody.position.x > physX ? -1 : 1;
scaleX = -direction;
quickFallAnimation();
}
health -= coldWeapon.power;
}
}
}
Как видишь, при столкновении с оружием врага, у персонада сразу отнимается соответствующий процент здоровья, и не нужно ничего никуда диспатчить