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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.12.2010, 20:16
Aber вне форума Посмотреть профиль Отправить личное сообщение для Aber Найти все сообщения от Aber
  № 11  
Ответить с цитированием
Aber
 
Аватар для Aber

Регистрация: Dec 2010
Адрес: Воронеж
Сообщений: 26
Отправить сообщение для Aber с помощью ICQ
ТЫ напиши подробнее что хочешь сделать, будет время помогу. И расскажу, что сам умею.

Старый 03.12.2010, 19:40
reNiks вне форума Посмотреть профиль Отправить личное сообщение для reNiks Найти все сообщения от reNiks
  № 12  
Ответить с цитированием
reNiks

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
ну значит так вот игра: http://www.playground.ru/flash/shot/1583/ опираясь на нее я хочу сделать нечто подобное. Ходит человечек собирает бонусы и убивает врагов. Сейчас у меня проблемы со стенами-не знаю как сделать чтоб герой не входил и не влипал в стены. Порикомендовали сделать с помощью тайлов но порыв в нете пару часов я не нашел ничо толкового на эту тему

Старый 03.12.2010, 21:17
Aber вне форума Посмотреть профиль Отправить личное сообщение для Aber Найти все сообщения от Aber
  № 13  
Ответить с цитированием
Aber
 
Аватар для Aber

Регистрация: Dec 2010
Адрес: Воронеж
Сообщений: 26
Отправить сообщение для Aber с помощью ICQ
Замахнулся ты конечно на серьёзную игру.
Для данной игры тебе полезно будет почитать здесь: http://siliren.ru/content/view/119/1/
И вот эту статью посмотри. http://xitri.com/2008/09/22/simple-engine-flash-game-top-view.html#more-109

Старый 03.12.2010, 23:15
medvedya2 вне форума Посмотреть профиль Отправить личное сообщение для medvedya2 Найти все сообщения от medvedya2
  № 14  
Ответить с цитированием
medvedya2
[+1 09.03.11]

Регистрация: Mar 2010
Сообщений: 128
Сделай все стены одного размера и квадратные, размести их в двухмерный массив,
Перед движением проверяй столкновении:

Допусти у тебя стены 100х100
точки регистрации по середине
Код AS3:
x1=будущий_x%100;
y1=будущий_y%100;
r=персонаж.ширина%100+1;
for(var:i=x1-r;i<=x1+r;i++)
  for(var:j=y1-r;i<=y1+r;j++)
    {
      var стена:Стена=массив_стен[i][j]; 
      if(Math.abs(стена.x-будущий_x)>100/2+персонаж.ширена/2
      &&
      Math.abs(стена.y-будущий_y)>100/2+персонаж.ширена/2)
      {
        персонаж.x=будущий_x;
        персонаж.y=будущий_y;
        break;
      }
     }


Последний раз редактировалось medvedya2; 03.12.2010 в 23:17. Причина: break;
Старый 04.12.2010, 11:58
reNiks вне форума Посмотреть профиль Отправить личное сообщение для reNiks Найти все сообщения от reNiks
  № 15  
Ответить с цитированием
reNiks

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
вот у меня вопрос возник. Есть массив где 1-стена, 0-земля. Есть картинка с изображением квадратика стены, то бишь тайла. Так вот, как сделать чтоб этот массив отображался на сцене и на месте 0-было пустое пространство, а на месте 1- отбражался квадратик стены

и еще вот есть герой внутри которого кадры с поворотами в разных направлениях. как определять на каком кадре внутри этого героя находится ползунок анимации?


Последний раз редактировалось reNiks; 04.12.2010 в 13:02.
Старый 04.12.2010, 13:03
medvedya2 вне форума Посмотреть профиль Отправить личное сообщение для medvedya2 Найти все сообщения от medvedya2
  № 16  
Ответить с цитированием
medvedya2
[+1 09.03.11]

Регистрация: Mar 2010
Сообщений: 128
Нужно писать в классах, они не такие страшные как выглядят .
Создай класс стена
в классе стены создай статическую ссылку на твой массив
в конструкторе передавай параметры дискретный X Y (тоесть с учётом что умножиться на размер тайтла)
далее в конструкторе добавляй в массив свою стену массив[x][y]=this;
далее экран_игры.addChild(this);

Код AS3:
package
{
	import flash.display.Sprite;
 
	public class Wall extends MovieClip
	{
		public static var array:Array;
		public static var gameScreen:Sprite;//сылка на экран
		public var dx:int;
		public var dy:int;
		public var type:int;
		public function Wall(dx:int,dy:int,type:int)
		{
			array[dx][dy]=this;
			this.x=dx*100;
			this.y=dy*100;
			this.dx=dx;
			this.dy=dy;
			this.type=type;
			this.gotoAndStop(type);//во flash в библиотеке создай мувик стена и задай привязку к этому классу каждый кадр будет отдельный вид стены.
 
			gameScreen.addChild(this);
		}
	}
}

Старый 04.12.2010, 15:16
reNiks вне форума Посмотреть профиль Отправить личное сообщение для reNiks Найти все сообщения от reNiks
  № 17  
Ответить с цитированием
reNiks

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
вот что я выдал путем недолгих размышлений:

Код AS3:
var speedX:Number;
var speedY:Number;
var tgtX:Number;
var tgtY:Number;
var boxP:Number;
 
stage.addEventListener(Event.ENTER_FRAME, tgtYz);
function tgtYz (e:Event):void {
	if (boxP == 4) {
		tgtY = box.y - 3;
	}else if (boxP == 2) {
		tgtY = box.y + 3;
	}
}
stage.addEventListener(Event.ENTER_FRAME, tgtXz);
function tgtXz (e:Event):void {
	if (boxP == 1) {
		tgtX = box.x + 3;
	}else if (boxP == 3) {
		tgtX = box.x - 3;
	}
}
stage.addEventListener(Event.ENTER_FRAME, stolknovenie);
function stolknovenie (e:Event):void {
	if (tgtX == box2.x || tgtX == box4.x) {
		speedX = 0;
	}else{
		speedX = 3;
	}
}
stage.addEventListener(Event.ENTER_FRAME, stolknovenie2);
function stolknovenie2 (e:Event):void {
	if (tgtY == box1.y || tgtY == box3.y) {
		speedY = 0;
	}else{
		speedY = 3;
	}
}

это должно проверять пересечение персонажа и стен и изменять переменную скорости. но есть одна небольшая проблма: оно не работает. помогите пожалуйста. тут привожу остальной код

Код AS3:
box.stop();
stage.addEventListener(KeyboardEvent.KEY_DOWN, moveF);
 function moveF (e:KeyboardEvent):void {
	 if (e.keyCode == Keyboard.UP) {
		 box.y -= speedY;
	     box.gotoAndStop(4);
		 boxP = 4;
	 }else if (e.keyCode == Keyboard.DOWN) {
		 box.y += speedY;
		 box.gotoAndStop(2);
		 boxP = 2;
	 }else if (e.keyCode == Keyboard.LEFT) {
		 box.x -= speedX;
		 box.gotoAndStop(3);
		 boxP = 3;
	 }else if (e.keyCode ==Keyboard.RIGHT) {
		 box.x += speedX;
		 box.gotoAndStop(1);
		 boxP = 1;
	 }
 }

Старый 08.12.2010, 22:20
reNiks вне форума Посмотреть профиль Отправить личное сообщение для reNiks Найти все сообщения от reNiks
  № 18  
Ответить с цитированием
reNiks

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
люди!!! может кто подробнее объяснить как отображать массив. я не понимаю как. пожалуйста помогите. напишите подробно

Добавлено через 8 минут
я наверно тупой но вот тока что получается:

Код AS3:
package {
	import flash.display.Sprite;
 
	public class Wall extends MovieClip {
		public static  var gameScreen:Sprite;//сылка на экран
		public var dx:int;
		public var dy:int;
		public var type:int;
		private var container_world:MovieClip;
		var world:Array  =  new Array;
 
		world [0] = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];
		world [1] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];
		world [2] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];
		world [3] = [1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];
		world [4] = [1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1];
		world [5] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,1];
		world [6] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1];
		world [7] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1];
		world [8] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,1];
		world [9] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1];
		world [10] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1];
		world [11] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1];
		world [12] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1];
		world [13] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1];
		world [14] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1];
		world [15] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1];
		world [16] = [1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1];
		world [17] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];
		world [18] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];
		world [19] = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];
 
		public function Wall(dx:int,dy:int,type:int);
 
		{
			world[dx][dy]=this;
			this.x=dx*100;
			this.y=dy*100;
			this.dx=dx;
			this.dy=dy;
			this.type=wall;
			this.gotoAndStop(1);//во flash в библиотеке создай мувик стена и задай привязку к этому классу каждый кадр будет отдельный вид стены.
 
			gameScreen.addChild(this);
 
 
 
 
 
		}
	}
};
что тут не так??

Старый 09.12.2010, 00:20
medvedya2 вне форума Посмотреть профиль Отправить личное сообщение для medvedya2 Найти все сообщения от medvedya2
  № 19  
Ответить с цитированием
medvedya2
[+1 09.03.11]

Регистрация: Mar 2010
Сообщений: 128
Код AS3:
package {
	import flash.display.Sprite;
 
	public class Wall extends MovieClip {
		public static  var gameScreen:Sprite;//сылка на экран
		public var dx:int;
		public var dy:int;
		public var type:int;
		private var container_world:MovieClip;
		public static var world:Array  =  new Array;
 
		world [0] = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];
		world [1] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];
		world [2] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];
		world [3] = [1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];
		world [4] = [1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1];
		world [5] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,1];
		world [6] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1];
		world [7] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1];
		world [8] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,1];
		world [9] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1];
		world [10] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1];
		world [11] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1];
		world [12] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1];
		world [13] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1];
		world [14] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1];
		world [15] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1];
		world [16] = [1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1];
		world [17] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];
		world [18] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1];
		world [19] = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];
 
		public static function createWorld():void
                       {
                        for(var i:int;i<world.length;i++)
                        for(var j:int;j<world[i].length;j++)
                         if(world[i][j]!=0)new Wall(i,j,world[i][j]);   
 
                        }
                       public function Wall(dx:int,dy:int,type:int):void
 
		{
			world[dx][dy]=this;
			this.x=dx*100;
			this.y=dy*100;
			this.dx=dx;
			this.dy=dy;
			this.type=wall;
			this.gotoAndStop(1);//во flash в библиотеке создай мувик стена и задай привязку к этому классу каждый кадр будет отдельный вид стены.
 
			gameScreen.addChild(this);
 
 
 
 
 
		}
	}
}
пока это не поймешь,помогать не буду.

Старый 06.01.2011, 21:31
reNiks вне форума Посмотреть профиль Отправить личное сообщение для reNiks Найти все сообщения от reNiks
  № 20  
Ответить с цитированием
reNiks

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
спасибо я наконец-то разобрался

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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