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

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

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

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

Прошу прощения за мою некомпетентность.... Возникла задача, с которой никак не получается справиться . Суть в следующем.
Предположим есть некий класс, c обработчиком EnterFrame:
Код:
public class ttt extends MovieClip
{				
		public function ttt(z:Object) {
                     z.addEventListener(Event.ENTER_FRAME, onEnter);
                                              }
 function onEnter(event:Event):void {

		// здесь должна вызываться ф-ция fn()
                // расположенная в базовом классе
                // каким образом???????


		                 	}
}
В базовом классе пишем:
Код:
public class Ss extends MovieClip	
	{
		
		public function Ss() {

             var be:ttt = new ttt(stage);

// здесь ф-ция которая должна вызываться из обработчика в ttt:

function fn() {
                trace("hello world");
                  }

                   }
}
Можно ли каким-то образом заставить обработчик из объекта be
выполнять функцию внутри конструктора в базовом классе?


Последний раз редактировалось farmonol; 16.01.2007 в 21:42.
Старый 16.01.2007, 22:33
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 2  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
я не могу понять, кто вас так учил называть переменные? особено когда выкладываешь чтобы видели другие люди?!

и почему два класса наследуют MovieClip, а не друг друга? я ничего не понял.

если имелось ввиду что ttt наследует ss то из tt можно либо просто

Код:
fn();
или если метод переопределен, и нужен старый то
Код:
super.fn();
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 17.01.2007, 00:05
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А почему класс имеет такое название?
И z не имеет метода addEventListener.

Приведите в порядок свой код.

Старый 17.01.2007, 14:00
farmonol вне форума Посмотреть профиль Отправить личное сообщение для farmonol Найти все сообщения от farmonol
  № 4  
Ответить с цитированием
farmonol

Регистрация: Jan 2007
Сообщений: 36
Добился всётаки как это можно реализовать.
Здесь создаем ф-цию n() и экземпляр объекта который будет ее выполнять:

Код:
package						
{
	import flash.display.*;		
	import flash.events.*;
	
	public class Run extends MovieClip
	{
	
		public function Run()	{
			
			var z:Test = new Test();
			z.txt = "Hello World";
			
			function n(){
				
				trace(z.txt);
				}
			
			z.mmx(n);
		
		}
		
	}
}
А вот класс из которого будет вызываться ф-ция n() :

Код:
package						
{
	import flash.display.*;		
	import flash.events.*;

	
	public class Test extends MovieClip
	{
		public var txt:String;
	
		public function Test()	{
	
		}
		
		public function mmx(nt:Function) {
			nt();
		}
		
		
	}
}

Старый 17.01.2007, 14:04
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ужас. Функции не объявляются внутри функции!
Почему нельзя в mmx передать ссылку на Run и вызвать метод какой-нибудь?

Старый 17.01.2007, 14:38
farmonol вне форума Посмотреть профиль Отправить личное сообщение для farmonol Найти все сообщения от farmonol
  № 6  
Ответить с цитированием
farmonol

Регистрация: Jan 2007
Сообщений: 36
потому что изначально была идея максимально упростить обращение с объектом (А), который генерирует некие события.
Чтобы пользователь именно внутри конструктора базового класса , в котором создавался экземпляр объекта (А), мог написать свои обработчики событий для объекта (А).

Старый 17.01.2007, 15:32
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Так и подписывай на события обработчик в другом классе.

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

Регистрация: Jan 2007
Сообщений: 36
Цитата:
Сообщение от __etc
Так и подписывай на события обработчик в другом классе.
Подскажите плиз примерчик, что-то не получается у меня

Старый 17.01.2007, 16:50
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Обычная подписка:
Код:
package {
    import flash.events.Event;
    import flash.display.Sprite;
    import Receiver;
    public class Dispatcher extends Sprite {
        public function Dispatcher() {
            super();
            var receiver:Receiver = new Receiver();
            this.addEventListener(Event.ENTER_FRAME,receiver.enterFrameHandler);
        }
    }
}
Код:
package {
    import flash.events.Event;
    public class Receiver() {
        public function Receiver() {
        }
        public function enterFrameHandler(event:Event):void {
            trace(this+'.enterFrameHandler()');
        }
    }
}

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

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

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


 


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


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