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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 31.01.2011, 12:04
SONce вне форума Посмотреть профиль Отправить личное сообщение для SONce Найти все сообщения от SONce
  № 11  
Ответить с цитированием
SONce
[+1.3 20.12.10]

Регистрация: Nov 2009
Сообщений: 124
да дело не в методе а в том что я немогу к нему обратится

Старый 31.01.2011, 12:06
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 12  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ах да, в приемнике параметров у Вас так же не указана типизация параметров -
Код AS3:
function tileCoord(coordX:uint, coordY:uint):Tiler
__________________
Reality.getBounds(this);

Старый 31.01.2011, 12:08
SONce вне форума Посмотреть профиль Отправить личное сообщение для SONce Найти все сообщения от SONce
  № 13  
Ответить с цитированием
SONce
[+1.3 20.12.10]

Регистрация: Nov 2009
Сообщений: 124
уф...лучше бы подсказали как к этому методу обратится)

Вообще конечно мне как человеку пишушему на php немного странно что к функции класса нельзя обратится без инициализации

Старый 31.01.2011, 12:10
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 14  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
ОК. Если я правильно понял, "map" это экземпляр Universe, который Вы ручками положили на сцену? А весь этот код пишете в первом кадре? Для начала Вам надо создать ссылку на этот экземпляр, чтобы использовать ее в коде. Например,
Код AS3:
var map:Universe = this.getChildByName("map");
А дальше уже все по плану.
__________________
Reality.getBounds(this);

Старый 31.01.2011, 12:12
SONce вне форума Посмотреть профиль Отправить личное сообщение для SONce Найти все сообщения от SONce
  № 15  
Ответить с цитированием
SONce
[+1.3 20.12.10]

Регистрация: Nov 2009
Сообщений: 124
нет, поняли вы не правильно. В первом посте все описал.

Старый 31.01.2011, 12:16
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 16  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
странно что к функции класса нельзя обратится без инициализации
Вы и не обращались.
"функция класса" это статический метод класса, например
Код AS3:
Universe.getTiler(1, 1);
Так можно было бы обратиться к
Код AS3:
static public function getTiler(x:uint, y:uint):Tiler
Но у вас же нет такого метода, да он и не возможен в Вашей архитектуре. Вы же обращаетесь к экземпляру (instance) класса Universe. Извините, но его надо сначала создать, что тут нелогичного - Вы обращаетесь к тому, чего нет. Есть Класс, но Класс - не его экземпляр.
__________________
Reality.getBounds(this);

Старый 31.01.2011, 12:17
SONce вне форума Посмотреть профиль Отправить личное сообщение для SONce Найти все сообщения от SONce
  № 17  
Ответить с цитированием
SONce
[+1.3 20.12.10]

Регистрация: Nov 2009
Сообщений: 124
да. про статик я уже прочитал.

Однако окончательно запутался.

В итоге имеем класс Universe который добавлен на сцену, как блин из класса Player обратится к чайлду Universe?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Сначала "найдите" экземпляр Universe, добавленный на сцену, и все встанет на свои места.
Цитата:
Класс Universe создает мир. Проходит циклом по XML и размещает на сцене Tilerы.
Цитата:
тайлы добавляются внутрь обьекта map
Формулируйте точнее, здесь каждое слово имеет свой конкретный смысл.
__________________
Reality.getBounds(this);

Старый 31.01.2011, 12:25
SONce вне форума Посмотреть профиль Отправить личное сообщение для SONce Найти все сообщения от SONce
  № 19  
Ответить с цитированием
SONce
[+1.3 20.12.10]

Регистрация: Nov 2009
Сообщений: 124
кароче сделаем проще

Universe:
Код AS3:
package 
{
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.events.Event;
	import flash.display.MovieClip;
	import flash.display.Stage;
	import Tiler;
	public class Universe extends MovieClip
	{
		public var maploader:URLLoader = new URLLoader();
		public var mapurl;
		public var map:XML;
		public var WORLD_X = 175;
		public var WORLD_Y = 75;
		public var TILE_H;
		public var TILE_W;
 
		public function Universe(url)
		{
			mapurl = url;
			addEventListener(Event.ADDED_TO_STAGE, init);
			maploader.addEventListener(Event.COMPLETE, init_map);
		}
		public function init(e:Event):void
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			//загружаем XML с картой
			maploader.load(new URLRequest(mapurl));
 
		}
		public function init_map(e:Event)
		{
			map = new XML(e.target.data);
			TILE_H = map.options.tile_h;
			TILE_W = map.options.tile_w;
			for (var gridY = 0; gridY < map.options.map_h; gridY++)
			{
				for (var gridX = 0; gridX <map.options.map_w; gridX++)
				{
 
					var tileID:Tiler = new Tiler(gridX,gridY);
					tileID.walkable = true;
 
 
					addChild(tileID);
 
					var stageX = WORLD_X - gridY * 0.5 * TILE_W + gridX * 0.5 * TILE_W;
					var stageY = WORLD_Y + gridY * 0.5 * TILE_H + gridX * 0.5 * TILE_H;
 
					tileID.x = stageX;
					tileID.y = stageY;
				}
			}
		}
	}
 
}
Tiler:
Код AS3:
package 
{
 
	import flash.display.MovieClip;
	import tile;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Tiler extends MovieClip
	{
		public var corY;
		public var corX;
 
		//важности
		public var walkable:Boolean;
 
		public function Tiler(gridX,gridY)
		{
			corY=gridY;
			corX=gridX;
			this.name = 'x'+gridX+'y'+gridY;
			addEventListener(Event.ADDED_TO_STAGE,init);
		}
 
		public function init(e:Event)
		{
			var mc:MovieClip = new tile();
			this.addChild(mc);
			addEventListener(MouseEvent.MOUSE_OVER,over);
		}
		public function over(e:MouseEvent)
		{
			trace(this.name);
		}
 
	}
 
}
Ну и злощастный плеер
Код AS3:
package 
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.display.Stage;
	import flash.display.Scene;
	import flash.display.DisplayObject;
 
	import Universe;
	import Tiler;
	public class Player extends MovieClip
	{
 
		public function Player()
		{
			addEventListener(Event.ADDED_TO_STAGE,init);
		}
 
		public function init(e:Event)
		{
			var mc:MovieClip = new player();
//как же тут получить координаты тайла???
 
		}
	}
 
}
в кадре
Код AS3:
var maper:Universe = new Universe("map.xml");
addChild(maper);
var pl:Player= new Player();
addChild(pl);

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

Регистрация: Jun 2010
Сообщений: 189
A что, есть смысл в сочетании программирования в классах с программированием в кадрах?

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

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

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


 


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


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