Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 22.04.2012, 01:24
Mkey вне форума Посмотреть профиль Отправить личное сообщение для Mkey Найти все сообщения от Mkey
  № 1  
Ответить с цитированием
Mkey
 
Аватар для Mkey

Регистрация: Apr 2012
Сообщений: 88
Arrow Объекты(Клипы) на рабочем поле.

Привет всем и это снова я
"Начинаю все с начала"
Есть у меня игровое поле.
А на нем объекты(смотри скриншот)
Нажмите на изображение для увеличения
Название: test1.jpg
Просмотров: 175
Размер:	22.8 Кб
ID:	27884
Этот объект, который размножен экспортирован в класс blocks
Нажмите на изображение для увеличения
Название: test2.jpg
Просмотров: 193
Размер:	27.3 Кб
ID:	27885

Когда мы запускаем флэшку, то создается герой, которые не должен наступать на эти объекты.
В старом варианте я их через функцию добавлял в массив, код писал в кадре объекта. В данный момент как это все организовывается не знаю.
Файл MyGame, Как основной
Код AS3:
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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:48.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.