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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.09.2011, 17:02
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию Перебор массива по 3 элемента

Есть 3 текстовых поля, идущих друг за другом.
Есть массив [1,3,5,6,9,12,55....]
Есть кнопки перемотки вперед-назад.

Подскажите как лучше всего организовать следующее :
Изначально в поля помещаются индексы массива [0],[1],[2] соотв. Если нажать вперед то [n][0][1] , еще раз [n-1][n][0] и т.д. Если нажать назад, [1][2][3], [2][3][4] и т.д.
__________________
Марк Tween

Старый 22.09.2011, 18:35
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цикличность тебе штоле нужно организовать?

Код AS3:
private function getIndex(i:int):int
{
    var l:int = this._myArray.length;
    i = i % l;
    i = i < 0 ? l + i : i;
    return i;
}
Этот метод при любом значении i будет выдавать корректный индекс массива с учетом цикличности. Просто подаешь ему по очереди i, i+1, i+2. Изначально i=0. Потом -- его при "вперед" и ++ при "назад".
__________________
Поймай яблоко 2!

Старый 22.09.2011, 18:43
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 3  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS3:
arr.unshift(arr.pop());// вперед
arr.push(arr.shift());// назад

Старый 22.09.2011, 18:53
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Спасибо ребята интересные варианты
__________________
Марк Tween

Старый 09.10.2011, 08:18
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 5  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
Цитата:
Сообщение от Zebestov Посмотреть сообщение
Этот метод при любом значении i будет выдавать корректный индекс массива с учетом цикличности
Клевая кабалистика, а главное, работает же

Старый 11.10.2011, 21:26
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Ребята извиняюсь поднимаю тему, начал разбираться и нифига не понял что и как тут делать, причем ни в одном из методов.... сорри объясните дураку.
И так у нас есть a = [1,5,6,9,14,2,0]; Изначально поля заполнены так : 1,5,6 соотв
по нажатию кнопки вперед в ответ я хочу получить 0,1,5 , а по нажатию назад 5,6,9 соотв. и т.д. циклично
__________________
Марк Tween

Старый 11.10.2011, 21:50
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
 
	public class Main extends Sprite
	{
		public const FORWARD:String = "вперед";
		public const BACWARD:String = "назад";
		private var arr:Array = [1, 5, 6, 9, 14, 2, 0];
		private var tfArr:Array = [];
 
		public function Main():void
		{
			createBut(FORWARD);
			createBut(BACWARD).x = 100;
			for (var i:int = 0; i < 3; i++)
			{
				var tf:TextField = new TextField();
				tf.x = 100 * i;
				tf.width = 60;
				tf.height = 20;
				tf.border = true;
				tfArr.push(tf);
				tf.text = arr[i];
				addChild(tf);
			}
		}
 
		private function createBut(text:String):TextField
		{
			var tf:TextField = new TextField();
			tf.text = text;
			tf.width = 80;
			tf.height = 20;
			tf.y = 30;
			tf.background = true;
			tf.backgroundColor = 0xC0C0C0;
			tf.selectable = false;
			tf.addEventListener(MouseEvent.CLICK, but_click);
			addChild(tf);
			return tf;
		}
 
		private function but_click(e:MouseEvent):void
		{
			switch (e.target.text)
			{
				case FORWARD: 
					arr.unshift(arr.pop()); 
					break;
				case BACWARD: 
					arr.push(arr.shift()); 
					break;
			}
			for (var i:int = 0; i < 3; i++) 
			{
				tfArr[i].text = arr[i];
			}
		}
	}
}

Старый 11.10.2011, 21:54
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 8  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Силин огромное тебе спасибище!!!
__________________
Марк Tween

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

блогер
Регистрация: Nov 2010
Сообщений: 143
Записей в блоге: 1
Цитата:
Сообщение от in4core Посмотреть сообщение
Подскажите как лучше всего организовать
Можно через итератор, задаешь текущий элемент, шаг и перебираешь структуру. Если нужно забить первое поле каждым третьим сообщением, создаешь следующее:

Код AS3:
var iterator:Iterator = new ItemsIterator();
iterator.listItems = itemsArray; // pre-initialized array of Items
iterator.step = 3;
iterator.current = 0;
var item:Item = iterator.firstItem()
while(!iterator.isDone()){
    iterator.nextItem();
}
ItemsIterator:
Код AS3:
public class ItemsIterator { //todo: Implement Iterator interface 
 
    private var listItems:Array /*of Item*/;
    private var current:int = 0;  
    private var step:int = 1;  
 
    public function nextItem():Item {  
      Item item = null; 
      current += step; 
      if (!isDone()) { 
        item = (Item) listItems[current]; 
      } 
      return item; 
    } 
 
    public function previousItem():Item { 
      Item item = null; 
      current -= step; 
      if (!isDone()) { 
        item = (Item) listItems[current]; 
      } 
      return item; 
    } 
 
    public function firstItem():Item { 
      current = 0; 
      return (Item) listItems[current]; 
    } 
 
    public function lastItem():Item { 
      current = listItems.length - 1; 
      return (Item) listItems[current]; 
    } 
 
    public function isDone():Boolean { 
      return current >= listItems.length ? true : false; 
    } 
 
    public function currentItem():Item { 
      if (!isDone()) { 
        return (Item) listItems[current]; 
      } else { 
        return null; 
      } 
    } 
 
    public function set step(int value):void  { 
      this.step = value; 
    } 
 
    public function set current(int value):void  { 
      this.current= value; 
    } 
 
    //todo: public getters/setters for listItems
 
 }

Старый 11.10.2011, 23:41
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 10  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
surlac весело но дико громоздко посравнению с предидущим оратором. Впринципе вопрос то и стоял как сделать это поаккуратнее, а через много кода написать это не составит труда
__________________
Марк Tween

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

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

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


 


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


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