Как вы уже знаете, я создал свой мини класс, который позволят узнать, пересекаются ли сложные объекты.
В классах совсем недавно и поэтому хочу спросить, в чем здесь ошибка?:
Код AS3:
package MikroacseAS3Lib.HitTest{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Matrix;
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.Event
public class HitTest extends Sprite{
public var isHit:Boolean;
public function HitTest(object1:DisplayObject,object2:DisplayObject) {
var bmpd1:BitmapData;
var bmpd2:BitmapData;
bmpd1 = new BitmapData(object1.getBounds(this).width, object1.getBounds(this).height, true, 0);
bmpd2 = new BitmapData(object2.getBounds(this).width, object2.getBounds(this).height, true, 0);
bmpd1.draw(object1, new Matrix(1, 0, 0, 1, object1.x, object1.y));
bmpd2.draw(object2, new Matrix(1, 0, 0, 1, object2.x, object2.y));
isHit=bmpd1.hitTest(new Point(), 255, bmpd2, new Point(), 255);
if(bmpd1.hitTest(new Point(), 255, bmpd2, new Point(), 255)){
trace('hit!')
}
bmpd1.dispose();
bmpd2.dispose();
}
}
}
Игра:
Код AS3:
import MikroacseAS3Lib.HitTest.*
import flash.events.MouseEvent;
import flash.filters.GlowFilter;
stage.addEventListener(MouseEvent.MOUSE_DOWN,down)
stage.addEventListener(MouseEvent.MOUSE_UP,up)
stage.addEventListener(MouseEvent.MOUSE_MOVE,function(){
if(new HitTest(mc1,mc2).isHit){
falsetrue.text='true'
mc1.filters=[new GlowFilter(0x0000ff,5,20,20)]
trace('hit!')
} else {
falsetrue.text='false'
mc1.filters=[]
}
})
function down(e:MouseEvent){
try {
e.target.startDrag()
} catch(e:Error){
}
}
function up(e:MouseEvent){
try {
e.target.stopDrag()
} catch(e:Error){
}
}
В чем именно проблема? А в том, что битмап создается неправильного размера, так сказать "неналазит" на мувиклип.
Исходник вместе со всеми "прибамбасами":