Просмотр полной версии : Доступ к объектам в разных фреймах
Создал я Document class, добавил мувик в первый фрейм, всё отлично, доступ к нему из Document class есть по name.
Потом перешёл на следуйщий фрейм и добавил ещё один мувик, как получить к нему доступ с Document class ?
BlooDHounD
09.02.2008, 12:13
точно так же как и в первом кадре.
BlooDHounD, нет не точно также.
Код:
package main{
import flash.display.MovieClip;
import flash.text.TextField;
public class test1 extends MovieClip {
public function test1() {
trace(tx);
tx.text = "Hello!";
}
}
}
Вывод:
null
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at main::test1$iinit()
Текстовое поле tx находится во втором фрейме мувика.
Я перетащил его из библиотеки на таймлайн во второй кадр. Неужели к нему нельзя получить доступ програмно?
А где у вас объявлена переменная-ссылка на TextField?
Для получения доступа к полю, надо перейти на второй кадр, если оно во втором кадре. А так вы пытаетесь выйти на втором этаже, не поднимаясь с первого на второй.
И ещё, кто вас так классы научил называть?
А где у вас объявлена переменная-ссылка на TextField
Во втором фрейме есть текстовое поле, в панеле Properties я задаю ему имя tx. Потом пытаюсь обратится к нему из класа Document class. Если текстовое поле находится в первом фрейме, то проблем нет, а во втором не неходит.
Для получения доступа к полю, надо перейти на второй кадр, если оно во втором кадре. А так вы пытаетесь выйти на втором этаже, не поднимаясь с первого на второй.
Вы имеете ввиду gotoAndStop(2)? А нелзя обратится как-то так: frame2.tx?
И ещё, кто вас так классы научил называть?
Переделаный пример Hello World с вашего форума))
BlooDHounD
09.02.2008, 14:43
а у вас она существует до тех пор пока вы не перешли на второй кадр? у меня бы не существовала.
Во втором фрейме есть текстовое поле, в панеле Properties я задаю ему имя tx.
Это за вас CS3 объявляет поля, что есть зло. Отключайте автоматическое объявление полей-ссылок на DisplayObject-ы, иначе при использовании любого нормального редактора AS3-кода, у вас сразу же посыпятся ошибки.
Вы имеете ввиду gotoAndStop(2)? А нелзя обратится как-то так: frame2.tx?
Нельзя. Вы пытаетесь из одной комнаты достать вещь из другой, не входя в неё.
Переделаный пример Hello World с вашего форума))
Значит его надо удалить.
__etc, спасибо!
Работает код:
package main{
import flash.display.MovieClip;
import flash.text.TextField;
public class TestFrame extends MovieClip {
public function TestFrame() {
this.gotoAndStop(2);
tx.text = "Hello!";
}
}
}
Это за вас CS3 объявляет поля, что есть зло. Отключайте автоматическое объявление полей-ссылок на DisplayObject-ы, иначе при использовании любого нормального редактора AS3-кода, у вас сразу же посыпятся ошибки.
А как иначе получить ссылку на DisplayObject ? Если я его добавлял не программно, а перетаскиванием из библиотеки на таймлайн?
BlooDHounD
09.02.2008, 21:39
getChildByName
getChildByName
Либо отключить автоматическое объявление переменных и указать их самому. Но нельзя вообще не указывать, что есть минус для CS3.
Либо отключить автоматическое объявление переменных ...
это снять галочку на Automatic Identation ?
это снять галочку на Automatic Identation ?
Вы это наугад по знакому слову решили спросить или может быть все-таки стоит перевести?
Я вопрос к теме спросить. Вы сказали, что можно отключить автоматическое объявление переменных. Вот и спрашиваю. А то я просто видел в настройках и спросил то или не то?
Так где можно отключить авто определение переменных?
Я вопрос к теме спросить. Вы сказали, что можно отключить автоматическое объявление переменных. Вот и спрашиваю. А то я просто видел в настройках и спросил то или не то?
Так где можно отключить авто определение переменных?
А я восклицательный знак к теме восклицаю.
Вы переводить тексты в интерфейсе программы пробовали?
Там много тектов... Потиху читаю тьюториал и изучаю кнопочки :)
Так как отключить авто определение переменных, чтобы самому присваивать когда делаешь addChild()??? весь интерфейс абшастал - не нашел, может еще не привык к новому?? Ато имя "инстанс42" мне не нравится и все время меняется(
Автоопределение переменных-ссылок отключается в настройках ActionScript проекта.
Только причем тут автоопределение и имена клипов?
значит я не про то говорю((
А что делать с именами клипов которые я добавляю с помощью addChild() - они автоматически имеют вид "instanceЧисло". Этим можно как-то управлять? Дать нужное имя добавляемому элементу? Чтобы можно было обратиться к нему из другого места кода по имени(не "instanceЧисло")?
name является сеттером и геттером.
Если имя никем не задано, оно генерируется автоматически. Имя не может быть null.
der hund
05.08.2008, 16:38
Я вроди все делаю так, но ничего не получается...
Перехожу в кадр а оно всеравно не находит.
der hund
05.08.2008, 17:20
Сделал gotoAndStop и всеравно нет доступа, все уже перепробывал...
Может чтото не так делаю?
Есть мувик к его TextField прекращается доступ после перехода на ключевой кадр этого мувика
package app{
import flash.display.*;
import flash.text.TextField;
public class Main extends MovieClip {
public function Main(){
movi.gotoAndStop("f7"); //всё работает если только f7 не
movi.txt.text = "Hello!"; //ключевой кадр в мувике
this.gotoAndStop(1);
}
}
}
если переходим к ключевому кадру то...
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at app::Main$iinit()
Подскажите в чём искать проблему
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.