PDA

Просмотр полной версии : Объекты(Клипы) на рабочем поле.


Mkey
22.04.2012, 01:24
Привет всем и это снова я:)
"Начинаю все с начала"
Есть у меня игровое поле.
А на нем объекты(смотри скриншот)
27884
Этот объект, который размножен экспортирован в класс blocks
27885

Когда мы запускаем флэшку, то создается герой, которые не должен наступать на эти объекты.
В старом варианте я их через функцию добавлял в массив, код писал в кадре объекта. В данный момент как это все организовывается не знаю.
Файл MyGame, Как основной
package{
import flash.display.*;
import flash.net.*;
import flash.events.*;
public class MyGame extends MovieClip{
var Hero:Sprite=new HelloWorld();
var x_target:int,y_target:int;//Точки куда двигается наш герой.
var moved:Boolean=false,movedx:Boolean=true,movedy:Boolean=true;//Можно ли двигатся
var deff:int;
var width1:int=Hero.width;
var sides:Array;
var x_hero:int,y_hero:int;
var gox:Boolean=false,goy:Boolean=false,
var old_x:int,old_y:int;
var ok_gox:Boolean,dont_go:Boolean=false;
var block:Boolean=false;
var pointx:int,pointy:int;
var wdy:int,wdx:int;
var d:int,c:int;
public function MyGame() {
//создаем объект Shape
addChild(Hero);//16
Hero.x = 20;//17
Hero.y = 20;//18

addEventListener(Event.ENTER_FRAME,Moved);
stage.addEventListener (MouseEvent.CLICK, moveTarget);}
public function Moved(e:Event):void
{
if(moved==true)
{
x_hero=Hero.x;y_hero=Hero.y;
if(x_target>x_hero)
{pointx=7;wdx=int(Hero.width/2);}else{pointx=-7;wdx=-int(Hero.width/2);}
if(y_target>y_hero)
{pointy=7;wdy=int(Hero.width/2);}else{pointy=-7;wdy=-int(Hero.width/2);}

if(Math.abs(Hero.x-x_target)>10)
{

for(var i:int=0;i<objects.length;i++)
{
if(objects[i].hitTestPoint(x_hero+pointx+wdx,y_hero,true)|| objects[i].hitTestPoint(x_hero+pointx+wdx,y_hero+int(Hero.width/2)+(((Hero.width/2)*10)/100),true) || objects[i].hitTestPoint(x_hero+pointx,y_hero-int(Hero.width/2)-(((Hero.width/2)*10)/100),true)){
gox=true; i=objects.length;}else{gox=false;}
}//for
if(gox==true){c++;movedx=false;ok_gox=false;}else{Hero.x+=pointx;ok_gox=true;}

}///Math.abs(Hero.x-x_target)>10
else{ok_gox=false;}


if(ok_gox==false){if(Math.abs(Hero.y-y_target)>10)
{

for(i=0;i<objects.length;i++)
{
if(objects[i].hitTestPoint(x_hero,y_hero+pointy+wdy,true)|| objects[i].hitTestPoint(x_hero+int(Hero.width/2)+(((Hero.width/2)*10)/100),y_hero+pointy+wdy,true) || objects[i].hitTestPoint(x_hero-int(Hero.width/2)-(((Hero.width/2)*10)/100),y_hero+pointy+wdy,true)){
goy=true; i=objects.length;}else{goy=false;movedy=true;}
}//for
if(goy==true){d++;movedy=false;}else{Hero.y+=pointy;}

}///Math.abs(Hero.x-x_target)>10

}

if(Math.abs(Hero.x-x_target)<10 && Math.abs(Hero.y-y_target)<10)
{moved==false;}
}//End move==true

}
public function moveTarget(e:MouseEvent):void{
if(block==false){
for(var j:int=0;j<objects.length;j++)
{if(objects[j].hitTestPoint(mouseX,mouseY,true))
{
dont_go=true;j=objects.length;
}else{dont_go=false;}
}

if(dont_go==false){moved=true;x_target=mouseX;
y_target=mouseY;}
}
}

}

}