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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.11.2014, 03:48
Маргарита62 вне форума Посмотреть профиль Отправить личное сообщение для Маргарита62 Найти все сообщения от Маргарита62
  № 1  
Ответить с цитированием
Маргарита62

Регистрация: Nov 2014
Сообщений: 10
Question Передать значение переменной в подгружаемый SWF-файл

Здравствуйте. Очень надеюсь на вашу помощь!
Перечитала множество форумов, но так и не нашла ответ на свой вопрос...
Задача:
Имеется главный файл приложения "main.swf". В нем расположены две кнопки "but1" и "but2", а также компонент ScrollPane с именем "scroll". При нажатии на кнопки в компонент "scroll" подгружается файл "menu.swf". Также в главном файле "main.swf" объявлена переменная "nameB", хранящая в себе имя нажатой кнопки.
Код:
Код AS3:
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";
}
Дальнейшие действия в подгруженном файле "menu.swf" должны происходить в зависимости от значения переменной "nameB".

Вопрос: как в подгружаемом файле считать значение переменной, объявленной в главном файле?


Последний раз редактировалось Маргарита62; 01.11.2014 в 14:58.
Старый 01.11.2014, 09:22
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Для оформления своего кода надо использовать теги [as3][/as3]
__________________
Reality.getBounds(this);

Старый 01.11.2014, 11:50
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 3  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Вызовите у подгружаемой SWF метод и передайте в него свою переменную.
1. имплементируйте главному классу подгружемой SWF какой-то интерфейс с одним единственным методом
2. поместите этот же интерфейс (с тем же пакетом) в главный свой проект, чтобы тот же файл интерфейса был и там, и там
3. загрузите SWF в главную в дочерний аппдомен http://www.flasher.ru/forum/showthread.php?t=184935
4. вызовите метод, определенный в интерфейсе у загруженной SWF
__________________
тут я

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

Регистрация: Nov 2014
Сообщений: 10
Wolsh, исправилась, первый раз.

КорДум, вроде вы всё так хорошо расписали, но к сожалению я ничего не понимаю..
Мой вопрос возник в рамках курсовой работы, но нам особо ничего не объясняли, вот пытаюсь сама разобраться.

Т.е. мне нужно создать какой-то внешний класс и в нем объявить переменную?
Извиняюсь, если задаю слишком глупые вопросы. Заранее спасибо за ответы.

Добавлено через 31 минуту
просто в примерах AS2.0 я нашла, что в для решения моей проблемы в подгружаемой SWF можно было бы написать _root.name. В AS3.0 есть что-то подобное?


Последний раз редактировалось Маргарита62; 01.11.2014 в 14:25.
Старый 02.11.2014, 02:23
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
В AS3.0 есть что-то подобное?
Код AS3:
(root as MovieClip).name
попробуйте
__________________
тут я

Старый 02.11.2014, 17:51
Маргарита62 вне форума Посмотреть профиль Отправить личное сообщение для Маргарита62 Найти все сообщения от Маргарита62
  № 6  
Ответить с цитированием
Маргарита62

Регистрация: Nov 2014
Сообщений: 10
Спасибо, но к сожалению не работает.
Написала в подгружаемом файле код
Код AS3:
trace((root as MovieClip).nameB);
Выводит
undefined


Последний раз редактировалось Маргарита62; 02.11.2014 в 21:44.
Старый 03.11.2014, 00:16
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 7  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Тут ещё смотря где написали, точнее — когда эта строка будет выполнена)) Если в конструкторе — то рано еще.
Сам root то виден? Что выдает трейс root?
(к слову сказать, КорДум, он ведь может быть и не мувиклип вовсе, a Sprite).
И кстати, переменная nameB точно объявлена как public?
__________________
Reality.getBounds(this);

Старый 03.11.2014, 01:02
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 8  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
(к слову сказать, КорДум, он ведь может быть и не мувиклип вовсе, a Sprite).
Все верно, не учел. Но, видимо, угадал, раз не споткнулось на ошибке при дерганьи свойства у null =)
__________________
тут я

Старый 03.11.2014, 03:36
Маргарита62 вне форума Посмотреть профиль Отправить личное сообщение для Маргарита62 Найти все сообщения от Маргарита62
  № 9  
Ответить с цитированием
Маргарита62

Регистрация: Nov 2014
Сообщений: 10
Wolsh,
Код AS3:
trace(root);
[object MainTimeline]
И я тут осознала, что есть такая штука, как пакет. Очевидно моя ошибка была в незнании этого =D
Нам про это даже и не рассказывали... Теперь я хоть отдаленно понимаю, что имел ввиду КорДум в третьем сообщении.
Спасибо, попробую разобраться.

Добавлено через 13 часов 43 минуты
Посмотрите, пожалуйста, что не так:

Код главного файла "main"
Код AS3:
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";
}
Код подгружаемого файла "menu"
Код AS3:
import SampleCode;
 
trace((root as MovieClip).nameB);
Код пакета, который я добавила к обоим файлам
Код AS3:
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.
Старый 03.11.2014, 17:31
Маргарита62 вне форума Посмотреть профиль Отправить личное сообщение для Маргарита62 Найти все сообщения от Маргарита62
  № 10  
Ответить с цитированием
Маргарита62

Регистрация: Nov 2014
Сообщений: 10
Вкладываю папку
Вложения
Тип файла: zip Архив.zip (559.8 Кб, 11 просмотров)

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

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

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


 


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


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