Форум 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=136929)

dandelion 01.03.2010 03:56

наследование класов
 
Добрый день.

Создаю два класса:

Код AS1/AS2:

package main  {
        import flash.display.*
        public class MyGame extends MovieClip {
                public function MyGame ():void {
                        trace("приступаем");
                        var button = new MyButton();
                }
        }
}

и наследуемый от него:

Код AS1/AS2:

package main {
        import flash.display.*
        public class MyButton extends MyGame {
                public function MyButton ():void {
                        trace("а вот и подкласс");
                }
        }
}


когда компилирую пишет ошибку:
Error: Error #2136: SWF-файл file:///D|/test/MyGame.swf содержит недопустимые данные.
at main::MyGame()

причём если убрать наследование, то всё работает.

подскажите пожалуйста в чём дело:wacko:

Zebestov 01.03.2010 04:23

я в этом не валом шарю =) утром спецы проснутся — ответят более точно. но ты вроде как зацикливаешь процесс. при любом вызове конструктора MyButton будет вызван конструктор MyGame, который в свою очередь вызывает новый конструктор MyButton, который и т.д.

Котяра 01.03.2010 10:35

не путайте наследование и включение. то что майбуттон входит в игру не означает что он наследуется от игры.
вы перепутали child - как ребёнок в списке экранных объектов и
child в смысле наследник - это совершенно разные явления.

dandelion 01.03.2010 12:01

ну не совсем...
я хочу создать переменную в MyGame которую будет потом модифицировать MyButton. Я так понимаю самое правильно решение это наследование...
Как ещё по другому сделать её видимой для MyButton

cleptoman 01.03.2010 12:12

почитайте умных книжек)..
MyButton не обязан быть дитем от MyGame (как сказали выше). для "модификаций" существуют свойства и методы.
или я просто не понял мысли, чего , собсно, вы хотите

dandelion 01.03.2010 12:19

может хоть главу в книжке покажете))
ещё раз объясню:
есть класс в котором создаётся массив с объектами, в нём находится игровое поле.
Далее надо из других классов обращаться к этому массиву для того чтобы модифицировать клетки на поле.
В умных книжках написано что подклассам доступны переменные определённые в суперклассах. Как по другому получить к ним доступ я не понимаю...

Wolsh 01.03.2010 12:31

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

cleptoman 01.03.2010 12:34

"В умных книжках написано что подклассам доступны переменные"
вы не дочитали)

доступны свойства, но не их значения )
изменив свойство в экземпляре класса родителя не изменятся значения этих же свойств экземпляров наследников.

для ваших целей используйте события

dandelion 01.03.2010 12:45

блин как всё сложно, а может подскажете всё таки как обратиться,
global то нет в AS 3 )

Bgg 01.03.2010 12:59

Цитата:

Сообщение от dandelion (Сообщение 890110)
блин как всё сложно, а может подскажете всё таки как обратиться,
global то нет в AS 3 )

Код AS3:

public static var

Но это вам не сильно поможет. У вас проблемы с архитектурой. Мука читайте с самого начала, там зоопарк пишут.


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

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