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

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

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

Регистрация: Jun 2009
Сообщений: 56
Question toString Vector

Можно ли как-то определить toString у Vector?

Vector.prototype.toString не прокатывает

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

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

Код AS3:
for each (var item:Object in myVector)
    trace(item.toString());
__________________
adobe AS3 manual

Старый 08.04.2013, 14:33
rs7 вне форума Посмотреть профиль Отправить личное сообщение для rs7 Найти все сообщения от rs7
  № 3  
Ответить с цитированием
rs7
 
Аватар для rs7

Регистрация: Jun 2009
Сообщений: 56
Цитата:
Сообщение от strangedk Посмотреть сообщение
Вроде проще так
Не, мне для всех сразу.

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

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

Код AS3:
// MyClass.as
override public function toString():String {
	return this.name;
}
Код AS3:
// Main.as
public var objs:Vector.<MyClass> = new Vector.<MyClass>();
 
public function init():void
{
	for (var i:int = 0; i < 10; ++i)
	{
		var item:MyClass = new MyClass();
		item.name = "myName(" + i + ")";
		objs.push(item);
	}
 
	trace(objs.toString());
}
__________________
adobe AS3 manual

Старый 08.04.2013, 15:23
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 5  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
Можно сделать через Proxy наследника, но интересно бы узнать зачем?
Единственным полезным примененим таких переопределений я бы посчитал развер рассылку событий об обновлении данных, а для toString, почему неудобно просто использовать статическую утилиту MyUtils.vectorToString(value:Vector.<*>); ?

Вот например наследник от Vector.<Point>. Сохраняяет все мотоды Vector, но переопределяет toString;
МОжно подумать еще над передачей типа.

Код AS3:
package {
	import flash.display.Sprite;
	import flash.geom.Point;
 
	public class ProxyExample extends Sprite 
	{
		public function ProxyExample() 
		{
			var vector:ProxyVector = new ProxyVector();
			vector.push(new Point(Math.random(), Math.random()));
			vector.push(new Point(Math.random(), Math.random()));
			vector.push(new Point(Math.random(), Math.random()));
			vector.push(new Point(Math.random(), Math.random()));
			vector.push(new Point(Math.random(), Math.random()));
 
			trace(vector.length);//Методы Vector сохранились
			trace(vector.toString());
			/*Выводит :
			item [0] = (x=0.5526889930479228, y=0.4928265390917659)
			item [1] = (x=0.007704821415245533, y=0.5104764206334949)
			item [2] = (x=0.5938579649664462, y=0.913416794501245)
			item [3] = (x=0.19566342374309897, y=0.6506094681099057)
			item [4] = (x=0.4772168640047312, y=0.5084680668078363) */
 
 
		}
	}
}
import flash.geom.Point;
import flash.utils.Proxy;
import flash.utils.flash_proxy;
 
dynamic class ProxyVector extends Proxy {
	private var _item:Vector.<Point>;
 
	public function ProxyVector() {
		_item = new Vector.<Point>();
	}
 
	override flash_proxy function callProperty(methodName:*, ... args):* {
		var res:*;
		if (methodName.toString() == 'toString')
		{
			var output:String = "";
			var len:uint = _item.length;
			for (var i:uint = 0; i < len; i++)
			{
				output += 'item [' + String(i) + '] = ' + _item[i].toString() + "\n";
			}
			res = output;
		}
		else
		{
			var _itemObj:Object = _item as Object;
			res = _itemObj[methodName].apply(_item, args);
		}
		return res;
	}
 
	override flash_proxy function getProperty(name:*):* {
		return _item[name];
	}
 
	override flash_proxy function setProperty(name:*, value:*):void {
		_item[name] = value;
	}
}


Мне кажется лучше просто завернуть его в обертку, и обращаться просто на точку длиннее vectorCont.item[i];


Прикольно как в разных языках по разному происходит эволюция, то от чего в AS с трудом избавились, в других языках воспринимают за достижение.
Или прикольно было набдюдать как СилверЛайтчики гордились тем что у них компонент на векторах, хотя без строкхинтинга с небрежно размазанными шрифтами, а во флеше очень радовлись когда появилась возможность работы с bitmapData вместо вектора
__________________
...


Последний раз редактировалось Александр Мостовой; 08.04.2013 в 15:37.
Старый 08.04.2013, 15:31
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 6  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Вопрос к rs7 - что вы хотите получить на выходе из toString у вектора ?
__________________
adobe AS3 manual

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

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

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


 


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


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