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

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

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

Регистрация: Jan 2009
Сообщений: 7
По умолчанию Вызов функции из класса в мувике

Я немного новичек в програмировании на AS3, поэтому вопрос может показаться глупым. Сразу скажу: честно пытался найти решение в гугле и книжках. Наверное видел фигу

Есть отдельно написанный класс, атачится к флэшке (main class). Внутри класса есть ф-ция (public draw(), ф-ция просто рандомно кидает на сцену 10 кружков). В самой флэшке есть мувик (export for AS, export for 1st frame, no instance name, instance of canvas() ), в нем еще один, к примеру top_mc (export for AS, export for 1st frame, instance of top() ). Мувики в классе объявляны.

Что хочу: Кидаю на сцену мувик (instance of canvas()), во вложенном в него мувике (top_mc) хочу чтобы сработала ф-ция draw(). Чтобы можно было раскопировать canvas (до тыщщи копий) и кружочки в каждом будут рисоваться, тогда наступит счастье во всем мире

Понимаю что для top_mc ф-ция draw() это неопределнная ф-ция и он не понимает чо от него хотят. Но как его научить этой ф-ции? Как объяснить ему что она лежит хорошая такая пабликом в основном классе проекта? Догадываюсь что нужно сослаться на класс и на саму ф-цию, не подскажете как? Буду очень благодарен.

Старый 30.01.2009, 14:49
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 2  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Можно использовать статический метод, либо испускать событие.
__________________
Griver

Старый 30.01.2009, 14:58
langolf вне форума Посмотреть профиль Отправить личное сообщение для langolf Найти все сообщения от langolf
  № 3  
Ответить с цитированием
langolf

Регистрация: Jan 2009
Сообщений: 7
"статический метод" - это как? (я мал и глуп, я не видал ..., вообщем я дизайнер, прости Господи) )
я читал про prototype это не они?

Старый 30.01.2009, 15:06
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 4  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Нет.
Статический метод - это метод, который описывается для класса, а не для его экземпляров.
Код AS3:
package
{
	public class Test
	{
                public static function draw(to:DisplayObjectContainer):void
                {
                     ....
                }
        }
}
Использование:
Код AS3:
Test.draw(container);
__________________
Griver

Старый 30.01.2009, 15:35
langolf вне форума Посмотреть профиль Отправить личное сообщение для langolf Найти все сообщения от langolf
  № 5  
Ответить с цитированием
langolf

Регистрация: Jan 2009
Сообщений: 7
И все равно ошибка. Он мне сразу пишет что все необъявлено и тд и тп. Вот мой код.

Код AS3:
package {
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	import flash.events.MouseEvent;
	import flash.display.Sprite;
	import flash.display.MovieClip;
	import flash.display.DisplayObjectContainer;
	import flash.display.Stage;
	import area;
	import clip;
	import mCcub;
	import mCcir;
	import mCtri;
 
 
	public class TrainF extends MovieClip
	{
		//Var
		var area_mc:MovieClip = new area();
		var clip_mc:MovieClip = new clip();
		var top_mc:MovieClip = new top();
		var cub_mc:MovieClip=new mCcub  ;
		var cir_mc:MovieClip=new mCcir  ;
		var tri_mc:MovieClip=new mCtri  ;
 
		var newClips:Array=[];
 
		var myWidth:Number=clip_mc.area_mc.width;
		var myHeight:Number=clip_mc.area_mc.height;
		var numClips:Number=30;
 
		public function TrainF() 
		{
			stage.addEventListener(KeyboardEvent.KEY_DOWN, space);
			this.draw(top_mc);
 
		}
 
		public function space(event:KeyboardEvent):void
		{
			if (event.keyCode==Keyboard.SPACE) {
				this.draw(top_mc);
				//trace(clip_mc.area_mc.x);
			}
		}
 
		public static function draw(to:DisplayObjectContainer):void
		{
			// Prepare the stage (empty it)
			//this.clearStage();
 
			for (var i = 0; i<numClips; i++)
			{
				var tri_mc:MovieClip=new mCtri  ;
				var cub_mc:MovieClip=new mCcub  ;
				var cir_mc:MovieClip=new mCcir  ;
 
				var clips:Array=new Array(tri_mc,cub_mc,cir_mc);
				var curClip=clips[Math.floor(Math.random()*clips.length)];
 
				canvas_mc.addChild(curClip);
				newClips.push(curClip);
 
				curClip.x=Math.random()*myWidth;
				curClip.y=Math.random()*myHeight;
			}
		}
 
		public function clearStage():void
		{
			for (var i:Number = 0; i < newClips.length; i++)
			{
				newClips[i].parent.removeChild(newClips[i]);
			}
			newClips=[];
		}
	}
}
Что я делаю не так? Подскажи пожалуйтса.

Старый 30.01.2009, 15:54
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 6  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Вы так и не поняли что такое статический метод.
Судя по жуткому коду, далее помогать не вижу смысла.
Либо учите основы языка, либо продолжайте просто рисовать.
__________________
Griver

Старый 30.01.2009, 15:55
langolf вне форума Посмотреть профиль Отправить личное сообщение для langolf Найти все сообщения от langolf
  № 7  
Ответить с цитированием
langolf

Регистрация: Jan 2009
Сообщений: 7
Хорошо. Понял вашу мысль. Спасибо и на этом

Старый 30.01.2009, 17:26
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 8  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
>> кружочки в каждом будут рисоваться,

Написание документ класса и класса для мувиков
http://www.dnadillo.dn.ua/fla/doc-mc-info.swf



Пример класса для документа и вложенных мувиков мувики удаляют себя при нажатии на них
http://www.dnadillo.dn.ua/fla/doc-rect-class.swf
http://www.dnadillo.dn.ua/fla/doc-rect-class.zip

Старый 30.01.2009, 17:33
langolf вне форума Посмотреть профиль Отправить личное сообщение для langolf Найти все сообщения от langolf
  № 9  
Ответить с цитированием
langolf

Регистрация: Jan 2009
Сообщений: 7
Цитата:
Сообщение от mre Посмотреть сообщение
Вы так и не поняли что такое статический метод.
Судя по жуткому коду, далее помогать не вижу смысла.
Либо учите основы языка, либо продолжайте просто рисовать.
Извините, но не могу успокоиться. Я вроде понял свою ошибку. В итоге создал отдельно класс Test, туда прописал статик ф-цию draw(). Пытаюсь обратиться к ней из мувиклипа он пишет

Цитата:
1180: Call to a possibly undefined method addChild
Как так? Я вроде импорт Мувиклип класса прописал. Почему он не может понять вдруг что такое addChild?

Старый 30.01.2009, 17:41
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 10  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Покажите класс с методом и кусок, где Вы обращаетесь к нему.
Только без лишнего кода.
__________________
Griver

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

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

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


 


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


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