Am o mica scena simplificata la minim:
Un "ego" care se trage cu mouse-ul si un "inamic" care detecteaza tot timpul daca eu sunt in spatele unor obiecte sau nu.
E simplu:
l-am facut chiar in timeline
FLA-ul e in atashament
- Cod: Selectaţi tot
var k:int = new int();
var m:int = new int();
var trage:int = new int()
ego.buttonMode = true
var enemyView:Sprite = new Sprite()
var linia:Graphics = enemyView.graphics
addChild(enemyView)
linia.lineStyle(1, 0x333333);
linia.moveTo(inamicul.x,inamicul.y);
linia.lineTo(ego.x,ego.y);
var f1:Rectangle = enemyView.getRect(stage);
var o1:Matrix = enemyView.transform.matrix;
var bD1:BitmapData
var p1:Point
var f2:Rectangle = cladirea1.getRect(stage);
var o2:Matrix = cladirea1.transform.matrix;
o2.tx = cladirea1.x - f2.x;
o2.ty = cladirea1.y - f2.y;
var bD2:BitmapData = new BitmapData(f2.width, f2.height, true, 0);
bD2.draw(cladirea1, o2);
var p2:Point = new Point(f2.x, f2.y);
ego.addEventListener(MouseEvent.MOUSE_DOWN, incepi);
ego.addEventListener(MouseEvent.MOUSE_UP, ridica);
addEventListener(Event.ENTER_FRAME, handleEnterFtrame);
function incepi(event:MouseEvent):void {
trage = 1
k = ego.x - mouseX;
m = ego.y - mouseY;
}
function ridica(event:MouseEvent):void{
trage = 0
}
function handleEnterFtrame(event:Event):void {
if(trage ==1){
ego.x = mouseX + k
ego.y = mouseY + m
}
linia.clear()
linia.lineStyle(1, 0x333333);
linia.moveTo(inamicul.x,inamicul.y);
linia.lineTo(ego.x,ego.y);
f1 = enemyView.getRect(stage);
o1 = enemyView.transform.matrix;
o1.tx = enemyView.x - f1.x;
o1.ty = enemyView.y - f1.y;
bD1= new BitmapData(f1.width, f1.height, true, 0);
bD1.draw(enemyView, o1);
p1 = new Point(f1.x, f1.y);
if(bD2.hitTest(p2,100,bD1,p1,100)== true){
enemyView.alpha = 0.2
}
if(bD2.hitTest(p2,100,bD1,p1,100) == false){
enemyView.alpha = 1.0
}
}
Si chiar functioneaza.
Dar nu pot sa scap sub nici o forma de eroarea asta:
- Cod: Selectaţi tot
ArgumentError: Error #2015: Invalid BitmapData.
at flash.display::BitmapData/ctor()
at flash.display::BitmapData()
at view_fla::MainTimeline/handleEnterFtrame()
Nu am nici o idee. Am incercat toate variantele posibile.....