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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.11.2009, 21:56
bicubic_bublic вне форума Посмотреть профиль Найти все сообщения от bicubic_bublic
  № 11  
Ответить с цитированием
bicubic_bublic
Banned
[+4 25.09.09]
[+1 12.11.09]
[+4 12.12.09]

Регистрация: Sep 2009
Сообщений: 231
Код AS3:
public class Controller {
 
	private var obj:Object;
	private var textField:TextField;
	private var propName:String;
 
	public function Controller(textField:TextField, obj:Object, propName:String) {
		this.textField = textField;
		this.obj = obj;
		this.propName = propName;
 
		update(true);
		textField.addEventListener(Event.CHANGE, onTFChange);
	}
 
	private function onTFChange(e:Event) {
		update();
	}
 
	public function update(back:Boolean = false) {
		if (back) {
			textField.text = obj[propName];
		} else {
			obj[propName] = textField.text;
		}
	}
 
}
для массива:
Код AS3:
new Controller(tf1, arr, 2);
для объекта:
Код AS3:
new Controller(tf1, obj, 'prop');


Последний раз редактировалось bicubic_bublic; 08.11.2009 в 21:59.
Старый 08.11.2009, 22:03
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 12  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Начните с этого:
Код AS3:
public class TFWithPromt extends TextField{
 
  public var prompt:String;
 
  public function TFWithPromt (promptText:String){
 
     super();
     this.prompt = promptText;
 
     this.addEventListener(MouseEvent.ROLL_OVER, showPrompt);
 
  }
 
  private function showPrompt(evt:Event){
     // показываем подсказку
  }
 
}
Потом как-то вот так:
Код AS3:
public class MyTF extends TFWithPromt {
 
  public static const DEFAULT_TEXT_1:String="поле 1";
  public static const DEFAULT_TEXT_2:String="поле 2";
  public static const DEFAULT_TEXT_3:String="поле 3";
 
  public function MyTF (type:Number = 0){
 
     super();
 
     switch(type):
     case 0:
        this.text = DEFAULT_TEXT_1;
     break;
 
  }
 
}
Ну и далее вешаем в конструкции switch любой листенер на любое действи и определяем каков будет вывод данных с MyTF в зависимости от type
__________________
...вселенская грусть

Старый 09.11.2009, 00:33
chabapok вне форума Посмотреть профиль Отправить личное сообщение для chabapok Найти все сообщения от chabapok
  № 13  
Ответить с цитированием
chabapok

Регистрация: Jul 2009
Сообщений: 240
Записей в блоге: 1
gloomyBrain: Я понимаю что так можно, но вам не кажется ли, что несколько процедурно-ориентированно? (вопрос риторический) Где-то в дебрях свей библии Страуструпп критиковал такой метод.
2bicubic_bublic: ну я и сделал так, примерно.
* * *

Но все же хотелось не уклоняться от темы. Вариантов решения можно наплодить много, я это понимаю.

вопрос топика был: возможно ли передать ссылку на сеттер?

Уже совершенно не важно каким другим путем можно пойти. Вопрос ПРИНЦИПИАЛЬНЫЙ, ради интереса, и чтобы знать в будущем.

Старый 09.11.2009, 02:01
bicubic_bublic вне форума Посмотреть профиль Найти все сообщения от bicubic_bublic
  № 14  
Ответить с цитированием
bicubic_bublic
Banned
[+4 25.09.09]
[+1 12.11.09]
[+4 12.12.09]

Регистрация: Sep 2009
Сообщений: 231
Цитата:
Сообщение от chabapok Посмотреть сообщение
Уже совершенно не важно каким другим путем можно пойти. Вопрос ПРИНЦИПИАЛЬНЫЙ, ради интереса, и чтобы знать в будущем.
ну что в гугле нашлось http://stackoverflow.com/questions/1...actionscript-3

и, видимо, это действительно так: нельзя получить ссылку на функцию сеттер-геттер

Старый 09.11.2009, 12:09
switcher! вне форума Посмотреть профиль Отправить личное сообщение для switcher! Найти все сообщения от switcher!
  № 15  
Ответить с цитированием
switcher!

Регистрация: May 2009
Сообщений: 220
Код AS3:
package
{
	import flash.display.Sprite;
 
	public class Main extends Sprite {
		private var _testGetSet:uint;
		private var directLink:Function;
 
		function Main() {
			testGetSet = 20;
			directLink(30);
			trace(_testGetSet);
		}
 
		public function get testGetSet():uint { return _testGetSet; }
		public function set testGetSet(value:uint):void {
			_testGetSet = value;
			if(!directLink) directLink = arguments.callee;
		}
	}
}

Старый 09.11.2009, 13:37
bicubic_bublic вне форума Посмотреть профиль Найти все сообщения от bicubic_bublic
  № 16  
Ответить с цитированием
bicubic_bublic
Banned
[+4 25.09.09]
[+1 12.11.09]
[+4 12.12.09]

Регистрация: Sep 2009
Сообщений: 231
Цитата:
Сообщение от switcher! Посмотреть сообщение
Код AS3:
 ...
Проще тогда сделать будет таким образом:
Код AS3:
private var _parameter:...;
public function set parameter(value:...):void {
   setParameter(value);
}
public function setParameter(value:...):void {
   _parameter = value;
}

Старый 09.11.2009, 13:50
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 17  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Не прикольно конечно из сеттера функцию делать, но я бы сделал так
Код AS3:
function(val:*):void{setter=val}

Старый 09.11.2009, 14:31
switcher! вне форума Посмотреть профиль Отправить личное сообщение для switcher! Найти все сообщения от switcher!
  № 18  
Ответить с цитированием
switcher!

Регистрация: May 2009
Сообщений: 220
bicubic_bublic, я дал ответ в строгости с сабжем + потому, что:
Цитата:
Сообщение от bicubic_bublic Посмотреть сообщение
видимо, это действительно так: нельзя получить ссылку на функцию сеттер-геттер

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

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

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


 


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


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