![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2015
Сообщений: 23
|
Доброго времени суток всем зашедшим в топик!
Суть: поясню на пальцах, есть флешка в несколько кадров, в каждом кадре есть свои динамические текстовые поля, которые обновляются лишь при входе в кадр (в зависимости от выбраного в флешке языка). В первом кадре пишу функцию, которая вытягивает из библиотеки 1 мувиклип создает его экземпляры на сцене с заданными координатами: var helpField: MovieClip; function func_ShowTip( X: Number, Y: Number) { helpField = new helpField_mc(); addChild(helpField); } Проблема: при переходе из некоторых кадров в другие вылетает ошибка: «TypeError: Error #1009: Cannot access a property or method of a null object reference.» Как удалось выяснить экспериментальным путем, (разместил трейсер в том кадре на котором происходит сбой): trace (textField3); // [object TextField] - когда всё ОК trace (textField3); // null – когда сбой Кста, на чайлдов слушателей не навешиваю. Еще мысли - методом addChild дети добавляются на весь stage, а может нужно как то именно в кадр добавлять?Попытки устранить проблему, которые не увенчались успехом: 1) пробовал переименовывать «проблемное» динам. текст. поле; 2) пробовал создать совсем новое динамич. текст. поле с другим шрифтом, кегелем, именем и т.д.; 3) если убрать «проблемное» динам. текст. поле – проблема исчезает вместе с ним, но без него никак. Как то странно получается, что флеш цепляется именно к вновь созданному или же проблемному динам. текстовому полю в том кадре…; 4) если не пользоваться функцией func_ShowTip, то проблема так же не появляется. Буду очень признателен любым мыслям по этому поводу, заранее спасибо! |
|
|||||
|
__________________
Я заклинаю вас действовать иначе. |
|
|||||
|
Регистрация: Mar 2015
Сообщений: 23
|
тогда при выполнении функции func_HideTip() вылетает ошибка:
"ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. at flash.display: isplayObjectContainer/removeChild()" |
|
|||||
|
а если
var helpField: MovieClip; function func_ShowTip( X: Number, Y: Number) { helpField = new helpField_mc(); addChild(helpField); }
__________________
Я заклинаю вас действовать иначе. |
|
|||||
|
Регистрация: Mar 2015
Сообщений: 23
|
Bletraut, так нельзя, потому что все чайлды helpField'а будут вне области видимости и удалить их будет нельзя. Компилятор будет ругаться на "Обращение несуществующего свойства helpField"
Добавлено через 1 час 36 минут так же опробовал (не помогло): 5) запихнуть текстовое поле в мувиклип 6) переместить текстовое поле на другой слой - флеш всё равно находит его и портит (чудеса конечно) |
|
|||||
|
Регистрация: Mar 2015
Сообщений: 23
|
соглашусь на 50%. не всегда удобно/выгодно писать код в одном кадре, иначе бы небыло таймлайна и вообще понятия инфрейм программинг.
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
В Фотошопе тоже есть таймлайн. Вы забываете, что Флэш — это программа для анимации. Далеко не все инструменты и панели, которые в нем есть, имеют отношение к программированию. В кадрах можно писать код — инструкции таймлайна, типа stop()/play(), gotoAndStop()/gotoAndPlay(), и этим стоит ограничиться. Чем раньше Вы дадите волю своим амбициям и начнете программировать в Классах, тем быстрее выберетесь из подвальной тьмы вот этого конструирования на булавках и изоленте. То, чем Вы сейчас занимаетесь — имитация программирования. При том что, я вижу, Вы понимаете ситуацию, но упрямо сами себя уговариваете надуманными аргументами. Для того, чтобы перейти на Классы, Вам понадобится максимум месяц. Максимум. 4 недели. И все прелести AS3 будут в Ваших руках, всё будет логично и послушно, строго и упорядоченно. Просто представьте себе ПРОГРАММУ Флэш, написанную в кадрах. Со всеми ее окнами, инструментами и возможными состояниями. Это нереально. Вы просто идете не в том направлении и напрасно тратите свое время.
Но выбор конечно за Вами.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Jan 2012
Сообщений: 836
|
Wolsh золотые слова)
|
|
|||||
|
Регистрация: Mar 2015
Сообщений: 23
|
Цитата:
![]() Честно говоря, абсолютная правда, как в воду смотрите. Сначала я писал чисто по кадрам (тема топика как раз оттуда), сейчас пишу всё в одном кадре, а для того что бы не путаться в длинных простынях кода разбиваю его по слоям. И да, сейчас уже настало понимание, что покадрового программирования как то не хватает, но и не совсем понимаю прелестей классов, ведь для того что бы сделать равносильную (покадровой) флешку с помощью классов нужно кода написать в три раза больше. Ведь всё что делалось мышей, т.е. создание и размещение объектов по сцене, выставление свойств и т.д. нужно будет подробно описывать кодом, я правильно говорю? Хоть и офтоп, но буду благодарен если натолкнете на нужный источник информации, где бы можно почитать о этом самом "переходе", в особенности, попунктно, о расширении возможностей и привелегиях, если так можно сказать ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|