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

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

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

Регистрация: Sep 2010
Адрес: Saint-Petersburg
Сообщений: 143
Question вызов функции из другого класса

Здравствуйте, профессионалы! Вновь обращаюсь к вам за помощью.
Не смогла найти ответ и поэтому решила написать уже здесь.

Я не понимаю, как вызвать функцию из основного класса?

Например, просто функция в основном классе Glav:

Код AS3:
public function func1(e:Event):void {
и т.д...
}
И второй класс, относящийся к мувиклипу mc1, класс Mc1, например:

Код AS1/AS2:
...............
import Glav;
public class Mc1 extends MovieClip{
public function Mc1():void{
this.addEventListener(MouseEvent.CLICK, func1);
}
}
Я знаю, что вызов функции написан неправильно, но я по-всякому попробовала, и ничего не получилось.
Очень прошу помочь разобраться с этой проблемой!!! Спасибо!!!

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

блогер
Регистрация: Nov 2010
Сообщений: 143
Записей в блоге: 1
Код AS3:
import Glav;
public class Mc1 extends MovieClip{
    public function Mc1():void
    {
        var instance:Glav = new Glav();
        this.addEventListener(MouseEvent.CLICK, instance.func1);
    }
}
Функция - тот же самый объект и перед вызовом он должен быть создан.

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

Регистрация: Sep 2010
Адрес: Saint-Petersburg
Сообщений: 143
Спасибо! Сейчас попробую, что получится!

Добавлено через 12 минут
Что-то ошибка какая-то вылезает, даже не пойму, в чём проблема:

Error #2136: SWF-файл file содержит недопустимые данные.
at ssa::Mc1()
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at ssa::Glav()
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at ssa::Glav()

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

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Mc1.as
Код AS3:
package {
 
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
 
	public class Mc1 extends MovieClip{
 
		public function Mc1() {
			addEventListener (Event.ADDED_TO_STAGE, init);
		}
 
		private function init (event:Event):void {
			removeEventListener (Event.ADDED_TO_STAGE, init);
			var glavClass:Glav = new Glav();
			stage.addEventListener(MouseEvent.CLICK, glavClass.func1);
		}
	}
}
Glav.as
Код AS3:
package {
 
	import flash.display.Sprite;
	import flash.events.Event;
 
 
	public class Glav extends Sprite {
 
		public function Glav():void {}
 
		public function func1 (event:Event):void {
			trace ("insideGlavTrace");
		}
 
	}
 
}
__________________
Нормально делай — нормально будет!

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

блогер
Регистрация: Nov 2010
Сообщений: 143
Записей в блоге: 1
Цитата:
Сообщение от Ylik Посмотреть сообщение
Error #2136: SWF-файл file содержит недопустимые данные.
Это из-за зацикливания. В конструкторе класса №1 создается объект класса №2, а в конструкторе класса №2 создается объект класса №1.

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

Регистрация: Sep 2010
Адрес: Saint-Petersburg
Сообщений: 143
Спасибо большое! Сейчас ещё раз попробую.

Добавлено через 7 минут
С ошибкой:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at ssa::Glav()
- справились.

Но это:
Error #2136: SWF-файл file содержит недопустимые данные.
at ssa::Mc1/init()
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at ssa::Glav()
- всё-равно выходит...

Старый 25.04.2011, 20:26
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 7  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Вот похожая тема


tsarapkabel А тебя не смущает, что ты каждый раз создаешь новый экземпляр мейнкласса и в том-самом-первом ничего в общем-то не произойдет?

Добавлено через 5 минут
Если пользоваться таким методом, то:
Код AS3:
package {
 
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
 
	public class Mc1 extends MovieClip{
		private var _glavInstance : Glav;
		public function Mc1(glavInstance : Glav) {
		  _glavInstance  = glavInstance;	
                  addEventListener (Event.ADDED_TO_STAGE, init);
		}
 
		private function init (event:Event):void {
			removeEventListener (Event.ADDED_TO_STAGE, init);
			stage.addEventListener(MouseEvent.CLICK, _glavInstance.func1);
		}
	}
}
Glav.as
Код AS3:
package {
 
	import flash.display.Sprite;
	import flash.events.Event;
 
 
	public class Glav extends Sprite {
		private var _mc1 : Mc1; 
		public function Glav():void {
                  _mc1  = new Mc1(this);
                  addChild(_mc1); 
                }
 
		public function func1 (event:MouseEvent):void {
			trace ("insideGlavTrace");
		}
 
	}
 
}
[/quote]
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

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

Регистрация: Sep 2010
Адрес: Saint-Petersburg
Сообщений: 143
Спасибо большое! Сейчас попробую разобраться!

Добавлено через 12 минут
Теперь новая ошибка:
ArgumentError: Error #1063: Несоответствие количества аргументов в ssa::Mc1(). Ожидалось 1, получено 0.

Что ж делать-то...

Старый 25.04.2011, 20:51
t4arty вне форума Посмотреть профиль Отправить личное сообщение для t4arty Найти все сообщения от t4arty
  № 9  
Ответить с цитированием
t4arty

Регистрация: May 2010
Адрес: пространство в положении
Сообщений: 219
значит когда создаете Mc1() то в скобках видать надо что-то указать!!!

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

Регистрация: Sep 2010
Адрес: Saint-Petersburg
Сообщений: 143
уффф... не получается ничего... ='(((

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

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

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


 


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


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