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

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

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

Регистрация: Nov 2004
Адрес: Архангельская область
Сообщений: 492
Отправить сообщение для Azo с помощью ICQ Отправить сообщение для Azo с помощью AIM Отправить сообщение для Azo с помощью Yahoo
По умолчанию addChild в подключаемых классах

в главном классе пишу

Код AS3:
add(10,10);

в подключаемом
Код AS3:
internal static function add(_x:Number,_y:Number):void{
			trace('Добавление монстра')
			var my_zombie:zombie1 = new zombie1; //(из библиотеки)
				my_zombie.x=_x;
				my_zombie.y=_y;
				addChild(my_zombie) // - ПРОБЛЕМА
}


Не добавляет на сцену (((
Код:
1180: Call to a possibly undefined method addChild.

Помогите)
__________________
-------------------------------
FLASH FLASH FLASH FLASH FLASH

Старый 10.06.2010, 19:49
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 2  
Ответить с цитированием
Zik.
 
Аватар для Zik.

Регистрация: Nov 2007
Сообщений: 1,723
может что-то не доимпортирали ?

Старый 10.06.2010, 19:56
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 3  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Покдлючаемый класс от чего расширяется? И как так работает метод без пути к классу?
Код AS3:
КлассГдеМетод.add(10, 10);
__________________
тут я

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

Регистрация: Nov 2004
Адрес: Архангельская область
Сообщений: 492
Отправить сообщение для Azo с помощью ICQ Отправить сообщение для Azo с помощью AIM Отправить сообщение для Azo с помощью Yahoo
zombie.add(10,10);



-----------------------------

Код AS3:
package golod{
	import golod.*;
	import flash.display.*;
 
	internal class zombie{
 
		internal static function trac():void{
			trace('ok')
		}
 
		internal static function add(_x:Number,_y:Number):void{
			trace('Добавление монстра')
			var my_zombie:zombie1 = new zombie1;
				my_zombie.x=_x;
				my_zombie.y=_y;
				addChild(my_zombie)
		}
	}
}
__________________
-------------------------------
FLASH FLASH FLASH FLASH FLASH

Старый 10.06.2010, 20:03
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
А должен быть расширен от Sprite.
Классы с большой буквы, сами же запутаетесь.
__________________
тут я

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

Регистрация: Nov 2004
Адрес: Архангельская область
Сообщений: 492
Отправить сообщение для Azo с помощью ICQ Отправить сообщение для Azo с помощью AIM Отправить сообщение для Azo с помощью Yahoo
Все ровно не работает addChild ((


класс main
Код AS3:
package golod{
 
	import flash.display.Sprite;
	import flash.display.MovieClip;
	import golod.Zombie;
 
	public class main extends Sprite{
 
	public function main(){
		Zombie.add(10,10);
	}
 
 
 
}
}

класс Zombie


Код AS3:
package golod{
	import golod.*;
	import flash.display.*;
 
	internal class Zombie extends Sprite{
 
		internal static function trac():void{
			trace('ok')
		}
 
		internal static function add(_x:Number,_y:Number):void{
			trace('Добавление монстра')
			var my_zombie:zombie1 = new zombie1;
				my_zombie.x=_x;
				my_zombie.y=_y;
				addChild(my_zombie)
		}
	}
}
__________________
-------------------------------
FLASH FLASH FLASH FLASH FLASH

Старый 10.06.2010, 20:08
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 7  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Дело не в этом. static - указывает на статичный блок памяти, т.е. он один для всего класса (не экземпляров, а именно класса).
Конечно, у класса нет контейнера - и addChild`а просто напросто не существует в этом скоупе, если Вы, конечно, не определили его, например вот так:
Код AS3:
internal static function addChild(child:DisplayObject)
Пример написанный выше - это лишь пример, так делать не нужно и неправильно. Во всяком случае в 99% случаев, те кто так сделают будут четко знать, зачем им это.

Добавлено через 1 минуту
Чтобы было более понятно:
Код AS3:
var spr:Sprite=new Sprite(); //создали экземпляр класса
spr.addChild(new Shape()); //добавили новый экземпляр класса шейп в дисплей лист spr. addChild НЕ static функция, поэтому всё ок. Чтобы вызвать addChild нам нужен был экземпляр класса, который создали выше.
Math.cos(Math.PI/4); //А вот тут мы экземпляров класса не создавали, потому что метод cos и поле PI - статичные.

Старый 10.06.2010, 20:15
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 8  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Тю, блин, я всегда чисто случайно обходил такую штуку.
Так вот, думаю, вам можно создать отдельный класс и потом экземпляр этого класса, в котором прописать методы добавления объектов и прочее по смыслу. Или в главном классе тоже можно, только не эстетично превращать главный класс в солянку. Только что-то мне не нравится такая композиция.
__________________
тут я


Последний раз редактировалось КорДум; 10.06.2010 в 20:27.
Старый 10.06.2010, 20:16
Azo вне форума Посмотреть профиль Отправить личное сообщение для Azo Найти все сообщения от Azo
  № 9  
Ответить с цитированием
Azo
 
Аватар для Azo

Регистрация: Nov 2004
Адрес: Архангельская область
Сообщений: 492
Отправить сообщение для Azo с помощью ICQ Отправить сообщение для Azo с помощью AIM Отправить сообщение для Azo с помощью Yahoo
а как тогда создать нестатичный класс? у меня ругается..
__________________
-------------------------------
FLASH FLASH FLASH FLASH FLASH

Старый 25.11.2011, 16:31
Hudson вне форума Посмотреть профиль Отправить личное сообщение для Hudson Найти все сообщения от Hudson
  № 10  
Ответить с цитированием
Hudson

Регистрация: Aug 2011
Сообщений: 3
Код AS3:
package  {
 
	import	flash.display.MovieClip;
 
	public class Plane extends MovieClip{
		//Графическое отображение ячейки
		private var plane_skin	:plane_mc;
		//private	var	posX		:uint = 200;
		//private var posY		:uint = 200;
 
		public var _callsign	:String = 'callsign';
		//public var index	:uint=0;
 
		public function Plane() {
			// constructor code
			trace('Класс plane создан')
		}
 
		public function createMC():void{
			trace('Функция createMC вызвана');
			var plane_skin=  new plane_mc();
 
			addChild(plane_skin);
 			plane_skin.x=200;
			plane_skin.y=200;
 
		}
 
		public function get callsign():String
		{
			return _callsign;
		}
 
		public function set callsign(str:String):void
		{
			_callsign=str;
		}
 
 
	}
 
}
основной код
Код AS3:
package  {
 
	import	flash.display.MovieClip;
 
 
	public class Main extends MovieClip {
 
		//private var plane_skin		:plane_mc;
 
 
 
		private var do_status:String;
 
//---------------------------------
 
 
		public function Main() {
			// constructor code
			playGame('init');
		}
 
		private function playGame(game_status){
 
			switch (game_status) {
				case 	'init':
					initVars();
					initGraph();
				break;
				case	'game':
				break;
				default:
				break;
			}
 
		}
 
		private function initVars():void{
			var plane:Plane = new Plane();
			plane.createMC();
			//trace(plane.callsign);
			//var plane_skin=  new plane_mc();
			trace(plane.callsign);
			plane.callsign='One';
			trace(plane.callsign);
		}
 
		private function initGraph():void{
 
		}
 
 
 
	}
 
}
И все же - как заставить из внешнего класса поместить мувиклип на сцену?

UPD. В общем. добился вот так

1. Импортируем во внешний класс
Код AS3:
 import flash.display.Stage;
2. Объявляем во внешнем классе
Код AS3:
private var sstage:Stage;
3. Пишем во внешнем классе функцию, передающую ссылку на stage основного класса
Код AS3:
public function getStageRef(stageRef:Stage) {
 
            // Ссылку на stage нужно передавать как параметр конструктора
            sstage = stageRef;
        }
4. Вызываем в основном классе разок функцию getStageRef.
Код AS3:
plane.getStageRef(stage);
5. Все, у нас есть ссылка на stage


Последний раз редактировалось Hudson; 25.11.2011 в 18:22. Причина: Найден ответ
Создать новую тему Ответ Часовой пояс GMT +4, время: 18:38.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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