|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Nov 2014
Сообщений: 10
|
Передать значение переменной в подгружаемый SWF-файл
Здравствуйте. Очень надеюсь на вашу помощь!
Перечитала множество форумов, но так и не нашла ответ на свой вопрос... Задача: Имеется главный файл приложения "main.swf". В нем расположены две кнопки "but1" и "but2", а также компонент ScrollPane с именем "scroll". При нажатии на кнопки в компонент "scroll" подгружается файл "menu.swf". Также в главном файле "main.swf" объявлена переменная "nameB", хранящая в себе имя нажатой кнопки. Код: but1.addEventListener(MouseEvent.CLICK, but1_MouseClickHandler); function but1_MouseClickHandler(event:MouseEvent):void { nameB = event.currentTarget.name; scroll.source = "menu.swf"; } but2.addEventListener(MouseEvent.CLICK, but2_MouseClickHandler); function but2_MouseClickHandler(event:MouseEvent):void { nameB = event.currentTarget.name; scroll.source = "menu.swf"; } Вопрос: как в подгружаемом файле считать значение переменной, объявленной в главном файле? Последний раз редактировалось Маргарита62; 01.11.2014 в 14:58. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Для оформления своего кода надо использовать теги [as3][/as3]
__________________
Reality.getBounds(this); |
|
|||||
Вызовите у подгружаемой SWF метод и передайте в него свою переменную.
1. имплементируйте главному классу подгружемой SWF какой-то интерфейс с одним единственным методом 2. поместите этот же интерфейс (с тем же пакетом) в главный свой проект, чтобы тот же файл интерфейса был и там, и там 3. загрузите SWF в главную в дочерний аппдомен http://www.flasher.ru/forum/showthread.php?t=184935 4. вызовите метод, определенный в интерфейсе у загруженной SWF
__________________
тут я |
|
|||||
Регистрация: Nov 2014
Сообщений: 10
|
Wolsh, исправилась, первый раз.
КорДум, вроде вы всё так хорошо расписали, но к сожалению я ничего не понимаю.. Мой вопрос возник в рамках курсовой работы, но нам особо ничего не объясняли, вот пытаюсь сама разобраться. Т.е. мне нужно создать какой-то внешний класс и в нем объявить переменную? Извиняюсь, если задаю слишком глупые вопросы. Заранее спасибо за ответы. Добавлено через 31 минуту просто в примерах AS2.0 я нашла, что в для решения моей проблемы в подгружаемой SWF можно было бы написать _root.name. В AS3.0 есть что-то подобное? Последний раз редактировалось Маргарита62; 01.11.2014 в 14:25. |
|
|||||
Регистрация: Nov 2014
Сообщений: 10
|
Спасибо, но к сожалению не работает.
Написала в подгружаемом файле код Выводит undefined Последний раз редактировалось Маргарита62; 02.11.2014 в 21:44. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Тут ещё смотря где написали, точнее — когда эта строка будет выполнена)) Если в конструкторе — то рано еще.
Сам root то виден? Что выдает трейс root? (к слову сказать, КорДум, он ведь может быть и не мувиклип вовсе, a Sprite). И кстати, переменная nameB точно объявлена как public?
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Nov 2014
Сообщений: 10
|
Wolsh,
И я тут осознала, что есть такая штука, как пакет. Очевидно моя ошибка была в незнании этого =D Нам про это даже и не рассказывали... Теперь я хоть отдаленно понимаю, что имел ввиду КорДум в третьем сообщении. Спасибо, попробую разобраться. Добавлено через 13 часов 43 минуты Посмотрите, пожалуйста, что не так: Код главного файла "main" import flash.events.Event; import flash.events.MouseEvent; import SampleCode; but1.addEventListener(MouseEvent.CLICK, but1_MouseClickHandler); function but1_MouseClickHandler(event:MouseEvent):void { functionBat1(); scroll.source = "menu.swf"; } but2.addEventListener(MouseEvent.CLICK, but2_MouseClickHandler); function but2_MouseClickHandler(event:MouseEvent):void { functionBat2(); scroll.source = "menu.swf"; } Код пакета, который я добавила к обоим файлам package { import flash.display.MovieClip; public class SampleCode extends MovieClip { public var nameB:String; function functionBat1() { nameB = "but1"; trace(nameB ); } function functionBat2() { nameB = "but2"; trace(nameB ); } } } TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at SampleCode/__setProp_but1_() at SampleCode() TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at SampleCode/frame1() Последний раз редактировалось Маргарита62; 03.11.2014 в 17:21. |
|
|||||
Регистрация: Nov 2014
Сообщений: 10
|
Вкладываю папку
|
Часовой пояс GMT +4, время: 23:24. |
|
« Предыдущая тема | Следующая тема » |
|
|