![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Есть массив 1,2,3,4,5,6,7,8
Нужно по таймеру (или еще как-то) выбирать из него по несколько элементов, допустим, по 3 Можно ли как-то оптимизировать этот код, или вообще, проще сделать ? import flash.utils.Timer; import flash.events.TimerEvent; var data:Array=[0,1,2,3,4,5,6,7]; var tickItems:int=3; var counter:int=0; var timer:Timer=new Timer(1000); timer.start(); timer.addEventListener(TimerEvent.TIMER,timerHandler); function timerHandler(event:TimerEvent):void { var i:int; var items:Array=new Array(); var startPos:int=counter; counter+=tickItems; if(counter>data.length) { var razn=Math.abs(counter-data.length); for(i=startPos;i<data.length;i++) { items.push(data[i]); } for(i=0;i<razn;i++) { items.push(data[i]); } counter=razn; } else { for(i=startPos;i<startPos+tickItems;i++) { items.push(data[i]); } } trace(items); } Последний раз редактировалось wvxvw; 25.09.2011 в 13:28. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
import flash.utils.Timer; import flash.events.TimerEvent; var data:Array = [0,1,2,3,4,5,6,7]; var tickItems:int = 3; var counter:int = 0; var timer:Timer = new Timer(1000); timer.start(); timer.addEventListener(TimerEvent.TIMER,timerHandler); function timerHandler(event:TimerEvent):void { var data2:Array = data.concat(data); var items:Array = []; items = data2.slice(counter,counter + 3); if (counter >= data.length) { counter -= data.length; } counter += tickItems; trace(items); } |
|
|||||
|
Спасибо
P.S. Ошибается алгоритмик ![]() tickItems = 5 Последний раз редактировалось djyamato; 25.09.2011 в 04:31. |
|
|||||
function timerHandler(event:TimerEvent):void { var items:Array = data.slice(0, tickItems) trace( "items : " + items ); for (var j:int = 0; j < tickItems; j++) { data.push(data.shift()); } } |
|
|||||
|
Регистрация: Jul 2011
Сообщений: 67
|
Мой вариант:
var counter:int = 0; var step:int = 5; var arr:Array = [1, 2, 3, 4, 5, 6]; public function timerHandler(e:TimerEvent):void { var current_part:Array = getArrayElemnts(arr, step, counter); trace('items(' + current_part.length + '): [' + current_part + ']'); counter = (counter + step) % arr.length; } public function getArrayElemnts(array:Array, num:uint, pos:int):Array { var result:Array = new Array(); var correction:int = array.length * Math.abs((Math.ceil(pos / array.length)))+1; while (num > 0) { result.unshift(array[((correction+pos + num-1) % array.length)]); num--; } return result; } Последний раз редактировалось ProxyGreen; 25.09.2011 в 16:05. |
|
|||||
|
Modus ponens
|
package { import flash.display.Sprite; import flash.events.Event; /** * ... * @author wvxvw */ public class CircularArray extends Sprite { private var _cursor:int; private var _step:uint = 4; private const _sequence:Array = [1, 2, 3, 4, 5, 6, 7]; private const _elements:Array = new Array(3); public function CircularArray() { super(); for (var i:int = 13; i > 0; i--) this.rotate(); } private function rotate(event:Event = null):void { this._cursor = (this._cursor + this._step) % this._sequence.length; for (var i:int; i < this._elements.length; i++) { this._elements[i] = this._sequence[(i + this._cursor) % this._sequence.length]; } trace(this._elements); } } }
__________________
Hell is the possibility of sanity |
|
|||||
|
Lorem ipsum
|
Был еще такой вариант
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
for (var i:int=-8; i<8; i++) trace(i + " : " + toCycled(i)); function toCycled( val:int, len:uint=5 ) : uint { return (len + val % len) % len; }
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Lorem ipsum
|
i.o., хорошо упаковал! Интересно, как со скоростью
![]()
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
ну, полагаю, математика быстрее условий
![]()
__________________
Загружаем картинки, минуя ошибки безопасности |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|