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

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

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

Регистрация: Jun 2009
Сообщений: 56
По умолчанию Замыкание

Напишите рабочий пример замыкания в as3. Что-то не получается у меня воспроизвести эту штуку

Старый 31.03.2012, 15:49
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Main extends Sprite 
	{
 
		public function Main():void 
		{
			var arr:Array = [1, 2, 3];
			var x:int = 10;
			var arr2:Array = calc(arr, function(elem:int):int { return x * elem } );
			trace(arr2); // 10, 20, 30
		}
 
		private function calc(arr:Array, method:Function):Array
		{
			var array:Array = [];
			for (var index:int = 0; index < arr.length; index++ )
			{
				array.push(method(arr[index]));
			}
			return array;
		}
	}
}
Добавлено через 2 минуты
хотя.. инты всеравно передаются не по ссылке, надо помудрёней пример придумать.
__________________
Reality.getBounds(this);

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Дык
Код AS3:
btn.addEventListener(MouseEvent.CLICK, function(event:MouseEvent) { trace(event.target); } );
__________________
тут я

Старый 31.03.2012, 16:05
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Во.
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Main extends Sprite 
	{
		private var _arrLength:int = 3;
 
		public function Main():void 
		{
			var arr:Array = [1, 2, 3];
			calc(function(modifier:int, index:int):void { arr[index] *= modifier } );
			trace(arr); // 10, 20, 30
		}
 
		private function calc(method:Function):void
		{
			var mod:int = 10;
			for (var i:int = 0; i < _arrLength; i++ )
			{
				method(mod, i);
			}
		}
	}
}
Добавлено через 3 минуты
КорДум, анонимная функция еще не closure. Фишка в сохранении контекста, то есть в моем примере анонимка, исполняясь в calc, "помнит" ссылку на arr. Это и есть замыкание.
__________________
Reality.getBounds(this);

Старый 31.03.2012, 16:20
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 5  
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
а, кстати, что плохого в замыкании кроме того, что она анонимка?

Старый 31.03.2012, 21:22
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 6  
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Недавно экспериментировал с замыканиями и scope'ами, и в итоге накрутил вот такое:

Код AS3:
function summ(a:Number):Function {
	return function(b:Number):Function {
		return function(c:Number):Function {
			return function(d:Number):String {
				return (a+b+c+d).toFixed();
			}
		}
	}
}
 
var total:String = summ(1)(2)(3)(4);
 
trace(total);
__________________
adobe AS3 manual

Старый 31.03.2012, 23:23
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 7  
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
жуть какая)

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

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

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


 


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


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