![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2012
Сообщений: 88
|
Привет всем и это снова я
![]() "Начинаю все с начала" Есть у меня игровое поле. А на нем объекты(смотри скриншот) Этот объект, который размножен экспортирован в класс blocks Когда мы запускаем флэшку, то создается герой, которые не должен наступать на эти объекты. В старом варианте я их через функцию добавлял в массив, код писал в кадре объекта. В данный момент как это все организовывается не знаю. Файл 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;} } } } } Последний раз редактировалось iNils; 23.04.2012 в 15:40. |
![]() |
Часовой пояс GMT +4, время: 09:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|