Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   область видимости класса (http://www.flasher.ru/forum/showthread.php?t=108253)

STILL.05 18.02.2008 17:50

область видимости класса
 
у меня усть 2 флешки game.swf и base.swf
загружается флешка game она подгружает base
в base имеется статичный класс например Config
получить этот класс в game можно через getDefinition

как сделать так что бы этот класс был виден в любом классе флешки game, можно ли это сделать?
если бы класс Config был во флешке game можно было бы в каждом классе (который хочет использовать Config) указать import pack.Config
и все, а как быть если класс в другой флешке и получается методом getDefinition ?

надеюсь я понятно изложил сють проблемы

etc 18.02.2008 17:59

Если не использовать getDefinition, то класс Config зашьется в game.

STILL.05 18.02.2008 18:05

хмм, интересно ) как я могу его использовать?

если я где то использую класс Config то на этапе компиляции флешка ругается что нет такого класса в game.swd

etc 18.02.2008 18:12

Там его и не должно быть.
Напишите интерфейс к классу Config и зашивайте в обе флешки.

STILL.05 18.02.2008 18:25

Цитата:

Сообщение от __etc
Напишите интерфейс к классу Config и зашивайте в обе флешки.

не совсем понятно как написать интерфейс к классу :(
можно по подробнее плиз, с фрагментом кода если можно :)

etc 18.02.2008 19:28

Фрагменты кода мне лень писать. Как использовать интерфейсы, можно узнать в справке.

STILL.05 19.02.2008 13:24

1) я так понял если я буду использовать интерфейсы то мне нужно реализовать класс Config в обоих флешках, т.к. интефейс не содержит в себе реализации а только описание

2) класс Config будет виден только в классах game и base
а мне нужно что бы я мог видеть этот класс из любого класса фвлешки game не имея ссылки на сам класс game. т.е. что бы я мог указать что то вроде import game.Config и использовать его напрямую

как это сделать?

etc 19.02.2008 13:28

Интерфейс должен быть в обеих флешках, Config (который реализует этот интерфейс) — только в одной.
Допустим, интерфейс называется IConfig, тогда в game мы пишем что-то вроде:
Код:

var config:IConfig = …getDefinition('game.Config') as IConfig;
if (config) {
  …
}


STILL.05 19.02.2008 13:32

все это я понял спасибо

если я создал переменную var config:IConfig в базовом классе флешки game
как мне получить ссылку на config (из другого класс) если нет ссылки на game
могу я как то сделать так что б переменная(класс) config была видна из любого класса флешки game

могу ли я в классах game указать что то вроде import game.config
и юзать класс config без ссылки на класс game

etc 19.02.2008 13:42

STILL.05, я устал объединять за вами посты, если вам нужно что-то добавить — отредактируйте свой пост, благо такая возможность есть.

Используйте статические свойства класса.

STILL.05 19.02.2008 13:47

сорри исправлюсь

статические свойства класса использовать можно но тогда для того что бы использовать config нужно писать game.config а хотелось бы один раз прописать в начале import game.config и дальше использовать класс config напрямую без game. ...

имеется ли такая возможность во флеше?

etc 19.02.2008 13:53

Не понял, что вы хотите и почему вас не устраивают стат. свойства-ссылки на IConfig…

STILL.05 19.02.2008 13:58

:-) можно сказать так: каждый раз когда я хочу использовать класс config мне лень писать game.config, т.к. использовать config буду часто

напоминаю config - класс статичный и создавать объекты этого класса не требуется, в нем есть множество статичных свойств которые нужно получить

хотелось бы иметь доступ к свойству(классу) config без использования "game." ...


например в классе Avatar флешки game хочу получить из класса config свойство avatar_url
в вашем случае в классе Avatar нужно писать
Код:

var url:String = game.config.avatar_url
а хотелось бы написать просто
Код:

var url:String = config.avatar_url
можно ли сделать так что бы класс config был виден в классе Avatar

я понятно объяснился?

etc 19.02.2008 14:08

Кажется кто-то что-то не понимает.
Во-первых, game — это класс или package? Если класс, почему его имя с маленькой буквы начинается?
В любом случае схема Game.config будет.

STILL.05 19.02.2008 14:26

game - это базовый класс флешки game о которой говорил в начале

т.е. мне в любом случае придется писать Game.config и избежать этого нельзя?

etc 19.02.2008 14:32

Цитата:

Сообщение от STILL.05
game - это базовый класс флешки game о которой говорил в начале

Имена классов обязаны начинаться с прописной буквы, а не строчной.

Цитата:

Сообщение от STILL.05
т.е. мне в любом случае придется писать Game.config и избежать этого нельзя?

Нет.

STILL.05 19.02.2008 16:46

во флешке base.swf есть класс MyClass который нужно получить методом getDefinition

если в классе Base флешки base.swf не создать хотя бы один экземпляр класса MyClass то метод hasDefinition возвращает false

почему так? :(

etc 19.02.2008 17:22

Потому что класс будет импортирован только в том случае, если он хотя бы раз используется.

STILL.05 19.02.2008 17:26

:-( а если я явно указываю импорт этого класса, неужели этого не достаточно

у меня флешка base.swf это своего рода контейнер классов которые используются во флешках которые загружают в себя base.swf

как быть? неужели нужно обязательно создать экземпляр класса что бы он импортировался?

etc 19.02.2008 17:28

Цитата:

Сообщение от STILL.05
:-( а если я явно указываю импорт этого класса, неужели этого не достаточно

Недостаточно.

И причем тут принудительное импортирование класса? У меня подозрения, что ту схему, которую я вам предлагал, вы не поняли.

STILL.05 19.02.2008 17:32

Цитата:

Сообщение от __etc
Недостаточно.

млин если флеш такой умный и сам решает когда нужно импортировать класс то зачем тогда придумали import классов?? флеш мог бы и сам это делать раз уж он такой умный, полный бред :-(


Цитата:

Сообщение от __etc
И причем тут принудительное импортирование класса?

во флешке base.swf есть куча классов которые нужно использовать только во флешке которая загрузит в себя base.swf, в самой флешке base.swf эти классы не используются

Цитата:

Сообщение от __etc
У меня подозрения, что ту схему, которую я вам предлагал, вы не поняли.

я не совсем понял зачем в моем случае использовать интерфейсы, если вы про это

etc 19.02.2008 18:15

Цитата:

Сообщение от STILL.05
млин если флеш такой умный и сам решает когда нужно импортировать класс то зачем тогда придумали import классов?? флеш мог бы и сам это делать раз уж он такой умный, полный бред :-(

Флеш не настолько умен, чтобы определять, что new MyClass означает «импортируй мне класс MyClass из папки ../../../src/classes/blablabla/superpackage/».



Цитата:

Сообщение от STILL.05
во флешке base.swf есть куча классов которые нужно использовать только во флешке которая загрузит в себя base.swf, в самой флешке base.swf эти классы не используются

За каким хреном они тогда в base лежат?


Цитата:

Сообщение от STILL.05
я не совсем понял зачем в моем случае использовать интерфейсы, если вы про это

Интерфейс к классу Config, лежащий в base. В game есть тоже этот интерфейс, но нет Config. При выдергивании getDefinition можно к полученному классу обращаться через интерфейс.

LinuxVideo 19.02.2008 18:22

Прошу, тыкните меня в учебник (не справочник) по проектированию архитектуры приложений на флеше. На русском или английском. Или в хелп.


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

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