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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.03.2012, 16:31
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 1  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Цитата:
как добавить в swf функцию, которую можно юзать из другого swf.
Просто в главном классе той swf которую будете подгружать делаете
Код AS3:
public function myfunc():void{
...
}
В главной swf берете
Код AS3:
loader.content["myfunc"]()
Параметры для вашеё функции можете сделать такие как вам захочется.
__________________
:)

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

Регистрация: May 2011
Сообщений: 72
Содержимое папки:
man.fla
Man.as
test.fla

Содержимое man.fla:
Код AS3:
import Man;
Содержимое Man.as:
Код AS3:
package {
	public class Main {
		private var movie:int;
 
		public function getMovie():int {
			return movie;
		}
 
		public function setMovie(i:int):void {
			movie = i;
		}
	}
}
Содержимое test.fla:
Код AS3:
var req:URLRequest = new URLRequest('c:\man.swf');
var loader:Loader = new Loader();
loader.load(req);
 
//loader.content('setMovie');
 
//loader.setMovie(1);
//trace(loader.getMovie());
Вообще колдовать пробовал. Единственное, что удавалось, так это в самом man.fla создать класс Маn и там юзать функции setMovie/getMovie. Но мне то они нужны в test.fla

Подозреваю, что я просто не правильно понимаю как это должно работать в теории.

Старый 28.03.2012, 20:19
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 3  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
для начала. Имя класса должно совпадать с именем файла. Класс Main а файле Man жить не может. Странно что вы не видите сообщения компилятора о том что так делать не нужно. Далее. Прописан ли ваш main как documentClass для main.fla
Ещё далее. Лоадер штука асинхронная. От того, что вы сказали ему что-то грузить, ещё не следует, что он это уже загрузил. Его контент будет доступен только после того, как он отправит вам событие о том, что он закончил работу. Пример того, как это делать советую посмотреть в документации к классу loader на сайте Adobe. Вообще настоятельно советую делать так: Как только вы видите незнакомый класс, то идёте в справку эдоб и читаете описание _всех_ методов и свойств что есть у этого класса с учётом наследования. Поверьте, это не так много и сэкономит вам время в разы. Вы бы уже точно всё это прочитали, пока ждёте ответов тут.
__________________
:)

Старый 28.03.2012, 21:20
warsem вне форума Посмотреть профиль Отправить личное сообщение для warsem Найти все сообщения от warsem
  № 4  
Ответить с цитированием
warsem
 
Аватар для warsem

Регистрация: May 2011
Сообщений: 72
Цитата:
Сообщение от Aquahawk Посмотреть сообщение
для начала. Имя класса должно совпадать с именем файла. Класс Main а файле Man жить не может. Странно что вы не видите сообщения компилятора о том что так делать не нужно.
Это последствия колдовства. Пробовал менять название класса/файла. Косяк не в этом. С этим бы я справился.

Цитата:
Сообщение от Aquahawk Посмотреть сообщение
Прописан ли ваш main как documentClass для main.fla
это система расположения файлов в папке или это что то в самом адобе нужно настраивать?

Цитата:
Сообщение от Aquahawk Посмотреть сообщение
Ещё далее. Лоадер штука асинхронная. От того, что вы сказали ему что-то грузить, ещё не следует, что он это уже загрузил. Его контент будет доступен только после того, как он отправит вам событие о том, что он закончил работу. Пример того, как это делать советую посмотреть в документации к классу loader на сайте Adobe.
Сделаю отслеживалку события загрузки и почитаю на офф сайте как эт сделать) Чес.слово)

Добавлено через 6 часов 36 минут
Цитата:
Сообщение от warsem Посмотреть сообщение
это система расположения файлов в папке или это что то в самом адобе нужно настраивать?
Вернулся с работы, загуглил. Я так понял, там указываетца основной класс FLA. Верно? Нужно ли тогда прописывать его в import?


Последний раз редактировалось warsem; 29.03.2012 в 04:24.
Старый 29.03.2012, 12:31
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 5  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
нет в импорт не надо, надо указать его главным классом.
__________________
:)

Старый 29.03.2012, 20:06
warsem вне форума Посмотреть профиль Отправить личное сообщение для warsem Найти все сообщения от warsem
  № 6  
Ответить с цитированием
warsem
 
Аватар для warsem

Регистрация: May 2011
Сообщений: 72
Вопрос снимаю, не правильно указывал главный класс. Проблему не решил, но пока нужно самому порытца.
Большое спасибо за помощь, без вас бы не разобрался бы(и не узнал бы много нового)



Дубль два:

Содержимое папки:
- man.fla
- Man.as
- test.fla

Файл man.fla пустой(кроме самого клипа), класс Man указан как основной. Как научил Аквахавк=)

Файл Man.as:
Код AS3:
package {
	public class Man {
 
		private var movie:int;
 
		public function getMovie():int {
			return movie;
		}
 
		public function setMovie(i:int):void {
			movie = i;
		}
	}
}
Файл test.fla:
Код AS3:
var req:URLRequest = new URLRequest('C:\\man.swf');
var loader:Loader = new Loader();
loader.load(req);
 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,manLoaded);
addChild(loader);
 
function manLoaded(e:Event):void {
//	for (var i in loader.content) { trace(i); }  - ни чего не выводит
//	trace(loader.content['getMovie']); - undefined
}

Либо не видит мои методы, либо не наследует. Что я делаю не так?


Последний раз редактировалось warsem; 30.03.2012 в 06:17.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

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

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


 


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


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