Привет. Нужна ваша помощь. Есть такая конструкция:

Код AS3:
package {
import flash.display.Sprite;
public class Main extends Sprite {
public static var spriteForShapes:Sprite;
public static var spriteForParticles:Sprite;
public function Main():void {
spriteForShapes = new Sprite();
spriteForParticles = new Sprite();
var sq:Square = new Square(400, 300);
var pt:Particle = new Particle(400, 100);
addChild(spriteForShapes);
addChild(spriteForParticles);
}
}
}

Код AS3:
package {
import flash.display.Sprite;
import ru.inils.utils.Debugger;
public class Square{
private var s:Sprite;
[Embed(source='../lib/test.swf', symbol='pict')]
private var SDef:Class;
public function Square(posX:int, posY:int):void {
s = new SDef();
s.x = posX;
s.y = posY;
Main.spriteForShapes.addChild(s);
}
public function print():void {
Debugger.trace("Square Class");
}
}
}

Код AS3:
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Point;
import ru.inils.utils.Debugger;
public class Particle{
private var s:Sprite;
public function Particle(posX:int, posY:int):void {
s = new Sprite();
s.graphics.beginFill(0x0000AA);
s.graphics.drawCircle(0, 0, 5);
s.graphics.endFill();
s.x = posX;
s.y = posY;
Main.spriteForParticles.addChild(s);
s.addEventListener(Event.ENTER_FRAME, test, false, 0, false);
}
private function test(e:Event):void {
s.y ++;
if (Main.spriteForShapes.hitTestPoint(s.x, s.y, true)) {
var t:* = Main.spriteForShapes.getObjectsUnderPoint(new Point(s.x, s.y))[0];
Debugger.trace(t); //[object Shape]
Debugger.trace(t.parent); //instance1.Square_SDef0
}
}
}
}
Прошу прощения за длинющий код, но тут просто - в главном классе создаются два статических спрайта, и в них добавляем Square и Particle. В Square из библиотеки эмбедим символ. Particle проверяется на пересечение с Square и в трейсе видно, что столкновение регистрируется. И вот самое главное - теперь нужно получить ссылку на экземпляр класса Square, имея [object Shape] (см. трейс), и выполнить метод print.