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

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

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

Регистрация: Jul 2007
Сообщений: 79
По умолчанию Callback function

Здравствуйте,

В проекте используется Extension (есть возможность изменить его код). Есть ли возможность добавить в проекте callback на вызов какой-то функции из экстеншена, аналогично ExternalInterface.addCallback на вызов из JS?

Заранее благодарен.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А чем в вашем случае callBack будет отличаться от любой другой функции? =/
__________________
Hell is the possibility of sanity

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

Регистрация: Jul 2007
Сообщений: 79
Смысл в том, чтобы пользователь, который будет использовать этот экстеншен, мог задать колбеки на функции не меняя ничего.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Все равно не понятно =/ Если функция есть - ее можно вызвать, если ее нет - ее можно создать и вызвать, только смысла во втором случае я не вижу...

ЗЫ. В JS колбек регистрируется на своего рода "прокси" объекте до того, как флешка инициализируется, чтобы избежать ситуаций, когда метод, которуй будет вызван окажется неопределенным (JS ведь не может заглянуть во внутрь флешки и узнать, а есть ли там такая функция). В вашем случае прокси не нужен... ну как бы смысла в нем нет...
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 20.08.2008 в 21:39.
Старый 22.08.2008, 12:55
Vevenn вне форума Посмотреть профиль Отправить личное сообщение для Vevenn Найти все сообщения от Vevenn
  № 5  
Ответить с цитированием
Vevenn

Регистрация: Jul 2007
Сообщений: 79
А, вообще, есть такая возможность?

Старый 22.08.2008, 14:18
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
package org.gfx.framework.utils 
{
	import flash.utils.Proxy;
	import flash.utils.flash_proxy;
	
	/**
	* ProxyCallBack class.
	* @author wvxvw
	*/
	public dynamic class ProxyCallBack extends Proxy
	{
		private var _callbacks:Object = {};
		
		public function ProxyCallBack() 
		{
			super();
		}
		
		public function addCallBack(functionName:String, closure:Function, scope:Object):void
		{
			_callbacks[functionName] = new Delegate(closure, scope);
		}
		
		flash_proxy override function callProperty(name:*, ...rest):*
		{
			for (var s:String in _callbacks)
			{
				if (String(name) == s) 
				{
					return (_callbacks[s] as Delegate).createDelegate(rest);
				}
			}
		}
	}
	
}
internal final class Delegate
{
	private var _func:Function;
	private var _scope:Object;
	
	public function Delegate(func:Function, scope:Object)
	{
		_func = func;
		_scope = scope;
	}
	
	public function createDelegate(args:Array = null):*
	{
		return _func.apply(_scope, args);
	}
}
Код:
package 
{
	import flash.display.Sprite;
	import org.gfx.framework.utils.ProxyCallBack;
    
    public class Main extends Sprite
    {
        public var proxy:ProxyCallBack;
        
        public function Main():void
        {
			super();
			proxy = new ProxyCallBack();
			proxy.addCallBack("someFunc", testProxy, this);
			proxy.someFunc("foo");
        }
		
		public function testProxy(s:String):void
		{
			trace(s);
		}
    }
}
Ток застрелите меня если я могу понять зачем это нужно =)
__________________
Hell is the possibility of sanity

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

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

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


 


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


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