Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.08.2015, 21:47
pskameton вне форума Посмотреть профиль Отправить личное сообщение для pskameton Найти все сообщения от pskameton
  № 1  
Ответить с цитированием
pskameton

Регистрация: Aug 2015
Сообщений: 3
Arrow Помогите с Movie Clip и текстовым полем.

Проблема такая, есть текстовое поле с динамическим выводом текста в нём "textinfo", данное текстовое поле находится в Movie Clip "ClipInfo"
Нужно вывести в текстовое поле информацию, делаю так:

var info:String = "Всё работает"; // Создаём переменную с текстом.
textinfo.text = info; // Выводим переменную в текстовое поле.

Если вставить этот код в Movie Clip, текст выводится, но мне нужно запускать его из основного кода Flash проекта, а переменные у Flash проекта и Movie Clip не общие.

Подскажите, пожалуйста, как мне решить проблему, как вывести текст из основного Flash в текстовое поле в Movie Clip?

Заранее огромное спасибо.

Старый 11.08.2015, 22:56
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Просто дайте имя мувиклипу и обращайтесь через него
Код AS3:
myClip.textinfo.text = info;

Старый 11.08.2015, 23:05
tattori вне форума Посмотреть профиль Отправить личное сообщение для tattori Найти все сообщения от tattori
  № 3  
Ответить с цитированием
tattori

Регистрация: Jul 2015
Сообщений: 73
если ты из основного напишешь textinfo.text = info; то as3 будет искать textinfo в основном, а там его нет он внутри мувиклипа значит сначало говоришь какой мувиклип а потом то что внутри мувиклипа
Код AS3:
ClipInfo.textinfo.text = info;
Добавлено через 10 минут
если переменная объявлена из основного

Старый 12.08.2015, 06:32
pskameton вне форума Посмотреть профиль Отправить личное сообщение для pskameton Найти все сообщения от pskameton
  № 4  
Ответить с цитированием
pskameton

Регистрация: Aug 2015
Сообщений: 3
Arrow Не получается.

Ребят пробовал так, не получается.

Выдаёт ошибку: Обращение возможно не определенного свойства "ClipInfo" через ссылку со статическим типом class.

ClipInfo - это класс моего MovieClip

Я пробую сейчас вот так:

var info:String = "20";

MovieClip(panel_left).MovieClip(animpanelleft).MovieClip(emotion).emotioninfo.text.addChild(info);

и так:

MovieClip(panel_left).MovieClip(animpanelleft).MovieClip(emotion).emotioninfo.text = info;

Вот так компилятор не выдаёт ошибку, т.к. я указываю ему что это MovieClip, но не выводит текст. У меня MovieClip еще в нескольких поэтому приходится делать так.

Подскажите, пожалуйста, еще варианты.


Последний раз редактировалось pskameton; 12.08.2015 в 07:07.
Старый 12.08.2015, 07:41
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 5  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
Цитата:
Сообщение от pskameton Посмотреть сообщение
Ребят пробовал так, не получается.

Выдаёт ошибку: Обращение возможно не определенного свойства "ClipInfo" через ссылку со статическим типом class.

ClipInfo - это класс моего MovieClip
вам неправильно подсказали, ClipInfo - класс, а вам нужно обращаться через ссылку на экземпляр класса,

вы где-то создали экземпляр
Код AS3:
 
var clipInfo:ClipInfo = new ClipInfo();

так вот clipInfo - ссылка на экземпляр , и через нее надо обращаться к этому экземпляру, а ClipInfo - это класс ващего экземпляра , к нему можно обратиться , если создать в нем , допустим статичную функцию, но это уже другая история.

тоесть вы должны дойти из главного класса до вашего текст-поля ПО ССЫЛКАМ

Код AS3:
panel_left.animpanelleft.emotion.emotioninfo.text = info;
если так не получается , то выводите на экран

Код AS3:
 
trace(panel_left); 
trace(panel_left.animpanelleft);
trace(panel_left.animpanelleft.emotion);
trace(panel_left.animpanelleft.emotion.emotioninfo);
trace(panel_left.animpanelleft.emotion.emotioninfo.text); // тут должен вывестить текущий текст в вашем поле
если в одном из этих трейсов будет null, значит у вас неправильная ссылка на экземпляр

Добавлено через 8 минут
Цитата:
Сообщение от pskameton Посмотреть сообщение

MovieClip(panel_left).MovieClip(animpanelleft).MovieClip(emotion).emotioninfo.text = info;
вот здесь нужно убрать все MovieClip(...), компилятор постарается преобразовать panel_left к типу MovieClip, если ваша левая панель не наследована от MovieClip (а она я больше чем уверен должна быть наследована от Sprite), то компилятор выдаст NULL, и соответственно вы потеряете ссылку.

пишите так
Код AS3:
 
panel_left.animpanelleft.emotion.emotioninfo.text = info;
но все равно как-то коряво.

Старый 12.08.2015, 08:35
pskameton вне форума Посмотреть профиль Отправить личное сообщение для pskameton Найти все сообщения от pskameton
  № 6  
Ответить с цитированием
pskameton

Регистрация: Aug 2015
Сообщений: 3
Цитата:
Сообщение от Isfet Посмотреть сообщение
вам неправильно подсказали, ClipInfo - класс, а вам нужно обращаться через ссылку на экземпляр класса,

вы где-то создали экземпляр
Код AS3:
 
var clipInfo:ClipInfo = new ClipInfo();

так вот clipInfo - ссылка на экземпляр , и через нее надо обращаться к этому экземпляру, а ClipInfo - это класс ващего экземпляра , к нему можно обратиться , если создать в нем , допустим статичную функцию, но это уже другая история.

тоесть вы должны дойти из главного класса до вашего текст-поля ПО ССЫЛКАМ

Код AS3:
panel_left.animpanelleft.emotion.emotioninfo.text = info;
если так не получается , то выводите на экран

Код AS3:
 
trace(panel_left); 
trace(panel_left.animpanelleft);
trace(panel_left.animpanelleft.emotion);
trace(panel_left.animpanelleft.emotion.emotioninfo);
trace(panel_left.animpanelleft.emotion.emotioninfo.text); // тут должен вывестить текущий текст в вашем поле
если в одном из этих трейсов будет null, значит у вас неправильная ссылка на экземпляр

Добавлено через 8 минут


вот здесь нужно убрать все MovieClip(...), компилятор постарается преобразовать panel_left к типу MovieClip, если ваша левая панель не наследована от MovieClip (а она я больше чем уверен должна быть наследована от Sprite), то компилятор выдаст NULL, и соответственно вы потеряете ссылку.

пишите так
Код AS3:
 
panel_left.animpanelleft.emotion.emotioninfo.text = info;
но все равно как-то коряво.
Я хотел уточнить у меня в коде:

var temppanelleft:MovieClip = new panel_left();

Тоесть создаётся переменная MovieClip, под названием temppanelleft я так понимаю используя класс panel_left из библиотеки.

Так как добарться до текстового поля?

temppanelleft это единственный элемент который выводится динамическим образом.

Пробовал так:

temppanelleft.emotioninfo.text = info;

и так:

temppanelleft.panel_left.anim_panelleft.emotion.emotioninfo.text = info;

и так:

temppanelleft.anim_panelleft.emotion.emotioninfo.text = info;

Не выводит ничего, trace тоже прописан, окно вывода пустое.

Добавлено через 33 минуты
И так, сейчас есть такой код:

Код AS3:
var info:String = "20";
 
temppanelleft.panel_left.animpanelleft.emotion.emotioninfo.text = info;
 
trace(info);
trace(temppanelleft);
trace(temppanelleft.panel_left); 
trace(temppanelleft.panel_left.animpanelleft);
trace(temppanelleft.panel_left.animpanelleft.emotion);
trace(temppanelleft.panel_left.animpanelleft.emotion.emotioninfo.text);
Выходит ошибка: TypeError: Error #1010: Термин не определен и не имеет свойств.
at _fla::MainTimeline/frame30()

Как это всё устроено:

temppanelleft - это MovieClip созданный динамическим образом так:
Код AS3:
var temppanelleft:MovieClip = new panel_left();
и выведенный на сцену.

panel_left - это класс Ролика который лежит в библиотеке.
animpanelleft - так же класс ролика в библиотеке, но он вставлен в panel_left
emotion - так же класс ролика в библиотеке, но он вставлен в animpanelleft

emotioninfo - это имя динамического текстового поле которое находится в ролике emotion и в него нужно вывести данные переменной info, которая находится в главном коде.

Я уже 2 дня с этим вожусь и совершенно мозг отказывается понимать как это сделать что бы работало (

Добавлено через 2 часа 37 минут
Разобрался, во всём в правду говорится утро вечера мудренее. Спасибо Isfet


Последний раз редактировалось pskameton; 12.08.2015 в 09:10.
Старый 12.08.2015, 12:18
tattori вне форума Посмотреть профиль Отправить личное сообщение для tattori Найти все сообщения от tattori
  № 7  
Ответить с цитированием
tattori

Регистрация: Jul 2015
Сообщений: 73
так какое имя экземпляра мувика с текстовым полем, она находиться на главной сцене?

Добавлено через 1 минуту
пипец как все закручено)))

Добавлено через 6 минут
если все так глубоко заложено не лучше ли будет объявить emotioninfo публичной или же статичной переменной?

Код AS3:
emotion.emotioninfo.text = info;
путь будет куда короче и менее запутанней

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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