Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   глюки с конструктором (http://www.flasher.ru/forum/showthread.php?t=91100)

firelord 24.01.2007 19:21

глюки с конструктором
 
Flash MX 2004

Сделал несколько собственных классов для манипуляции с данными. Глюки лезут такие, что мама не горюй! Сразу предупрежу, что программиранием занимаюсь професионально лет 15, а с флешом только стал разбираться.

Дерево классов такое:
Код:

city.Cell
|- city.Terrain
|- city.Object
    |- city.Location
          |- city.City

В одной из функций внутри класса city.Location вызывается конструктор city.Terrain: terr=new city.Terrain(...)
Так вот, конструктор этот упрямо возвращает undefined - ни на что при этом не ругаясь. Я перерыл весь код вдоль и поперек - попытался составить пример, достаточный для того, чтобы разместить здесь - в примере все работает :) Причем, попытки расстановки создания объекта в другие куски кода (var terr=..., trace(terr)) везде дают underfined.

Вычистил все классы до трех функций, чтобы локализовать проблему. В какой-то момент глюк ушел - объекты стали создаваться. Начал потихоньку восстанавливать код - и вот снова - конструктор просто не вызывается :)))

До этого уже сталкивался с такой же проблемой (не отрабатывает конструктор), когда пытался создать класс в одном package путем наследования класса из другого package. В прошлый раз просто перенес наследуемый класс в package предка, и все заработало. Здесь все классы - в одном пакете.

Очевидно, что наткнулся на какой-то "недокументированный глюк" флеша ;) Причем, сволочь не ругается даже ни на что, а просто игнорирует вызов конструктора :)

Соотв. ВОПРОС: может быть кто-нибудь сталкивался с подобными глюками с классами и по какому колесу надо постучать, чтобы они пропали? или что хотя бы искать?

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

Заранее благодарен за любую подсказку!

etc 24.01.2007 19:24

Object — стандартный класс флеша. У тебя просто возник конфликт.
Переименуй Object в Building, например.

firelord 24.01.2007 19:30

ой, сорри! ошибся, когда писал пост - уже переименовал: city.cityObject - не в этом дело ;)

etc 24.01.2007 19:39

Лучше заюзать директивы import city.Terrain; и создавать new Terrain. Хотя это не особо влияет. Посмотри, чтобы у тебя не было переменных с именем city, т.е. совпадающим с именем пакета.

firelord 24.01.2007 19:43

в смысле - глобальных переменных? это вариант! есть одна такая... щас попробую кильнуть ;)

etc 24.01.2007 19:43

А ещё и глобальная есть? :D
Нигде никаких переменных с именем city быть не должно ни в коем случае.

firelord 24.01.2007 19:45

ЙЙЙЙЙЙЙЙЙЙЕЕЕЕЕЕС! вот уж не подумал бы никогда! спасибо огромное! сколько времени я убил на эту фигню - просто жуть... вот к чему приводят полуколеночные реализации языков программирования - такой вот коллапс namespace :)
еще раз спасибо за помощь!


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

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