Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Action script 2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=49)
-   -   Обращение к внешним функциям из класса (http://www.flasher.ru/forum/showthread.php?t=59086)

Geniot 07.06.2004 16:46

Обращение к внешним функциям из класса
 
Привет,

может я чё не так делаю??

В главном фрейме "завожу" класс:

import MyClass;
mw = new MyClass(this);
mw.start();
stop();

Класс:
class MyClass{
private static var ROOT_MC:MovieClip;
//constructor
function MyClass(rmc:MovieClip){
ROOT_MC = rmc;
}
public function start():Void{
ROOT_MC.nextScene();
}

}

По идее класс владеет ссылкой на рут и должен перевести управление к следующей сцене. Но этого не происходит. Также если в руте создать какую-нибудь функцию и попробовать её вызвать из класса это не сработает. За то можно изменять свойства объектов рута из класса. Например:
ROOT_MC.ok_button._visible = false;

но опять же нельзя навесить хэндлер на кнопки рута:
ROOT_MC.ok_button.onRelease = function(){
trace("ok clicked");
}
не работает :(

Вопрос: как вызывать функции рута или таймлайна рута из класса?

Nucer 08.06.2004 02:04

У меня вроде подобные вещи работают нормально. По крайней мере когда обращаюсь к текстомым полям в руте...

nuran 08.06.2004 07:55

Re: Обращение к внешним функциям из класса
 
Цитата:

Оригинал написал(а) Geniot
Привет,

может я чё не так делаю??

В главном фрейме "завожу" класс:

import MyClass;
mw = new MyClass(this);
mw.start();
stop();

Класс:
class MyClass{
private static var ROOT_MC:MovieClip;
//constructor
function MyClass(rmc:MovieClip){
ROOT_MC = rmc;
}
public function start():Void{
ROOT_MC.nextScene();
}

}

По идее класс владеет ссылкой на рут и должен перевести управление к следующей сцене. Но этого не происходит. Также если в руте создать какую-нибудь функцию и попробовать её вызвать из класса это не сработает. За то можно изменять свойства объектов рута из класса. Например:
ROOT_MC.ok_button._visible = false;

но опять же нельзя навесить хэндлер на кнопки рута:
ROOT_MC.ok_button.onRelease = function(){
trace("ok clicked");
}
не работает :(

Вопрос: как вызывать функции рута или таймлайна рута из класса?

Ну ... может нужно было написать
Код:

class MyClass extends MovieClip{
Да ещё, я так и не понимаю, зачем писать

Цитата:

private static
ЗАЧЕМ? Ведь переменная становится тем типом, каким была первый раз вызвана, а это лишь ломание ГОЛОВЫ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

nuran 08.06.2004 07:57

Что ты хочешь сказать, что обращение к рутовым функциям ни к чему не приводит?
Попоробуй порисовать из класса в руте. ? Всё получится. Это скорее с головой не в порядке у кого-то ...

Geniot 08.06.2004 15:38

Хм. Похоже не работает только nextScene(). И я теперь понимаю почему, nextScene() не является методом класса MovieClip. Просто так с боку припёку, появился во 2ом флэше...

class MyClass extends MovieClip не помогло для решения этой проблемы - вызова nextScene() из класса.

private static нужно использовать, когда мы не хотим, чтобы статическая переменная была изменена случайно вне класса. В то же время, когда мы хотим, чтобы существовала только одна такая переменная для всех экземпляров класса.

С головой всё в порядке.


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

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