Ja ma tablicę z 17 obrazami. Chcę wybrać każdy obraz z tablicy i umieścić go na scenie, ale powinno być konkretny sposób, aby to zrobić. Po wybraniu pierwszego obrazu potrzebuję tego, więc powinien to wyglądać:

var myarray = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]; // these are the indexes for the 17 images

Wygląda na to kolejność elementu: [0,,,,10,2,1,1,3,2,2,1,3,124,13,16,8];

Muszę ich używać w Tween, jest to funkcja, w której robię to, ale nie mam Odry, o którym wspomniałem.

var pick_images = function(lights_arr,iterator,f)
{
  if(iterator < lights_arr.length)
  {
    iterator = iterator +1;
  }
    createjs.Tween.get(lieghts_arr[iterator]).to({alpha:0},200).wait(0).to({alpha:1},200).wait(100).call([f,lights_arr,f]);
pick_images(arr, i,pick_images);

Wiem, że jeśli weźmieję światła_arr.length i podzielę go o 2, zaokrąglić go, mam zawsze drugi obraz jak 9,10,11 lub 12. Potrzebuję tego, czego potrzebuję po każdej pętli, aby wymuszyć dwie elementy (obrazy), które użyłem .

Czy wiesz, jak mogę to zrobić, aby pracować w mojej funkcji?

0
CMS 12 sierpień 2014, 12:46

4 odpowiedzi

Najlepsza odpowiedź

Co powiesz na to?

var myarray = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];

var select = [];
var step = 9;
var len = myarray.length;
for(var i = 0; i < len * step; i += step)
    select.push(myarray[i % len])

console.log(select) // [ 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8 ]
1
georg 12 sierpień 2014, 08:52

Właśnie rozszerzono / zoptymalizowany kod Georga Trochę, aby uczynić go bardziej dynamicznym, ponieważ myślę, że jego jest całkiem fajne rozwiązanie:

var len = 17,
    myarray = Array.apply(null, {length: len}).map(Number.call, Number),
    select = [],
    step = Math.round(myarray.length / 2);

for(var i = 0; i < len * step; i += step) {
  select.push(myarray[i % len]);
}

console.log(select);

Oto kod, aby wygenerować wypełnioną tablicę z liczbami całkowitymi.

1
Community 23 maj 2017, 11:59
var switch = false;
var selectedIndex = 0;
if(i < arr.length)
{
    selectedIndex = (switch) ? i : i + 9; 
    switch = !switch;
}

Coś takiego powinno to zrobić, prawdopodobnie mógłby być jednak wykonany NEATER. Uwaga, niesprawdzona i na szczycie mojego popo.

Edytuj: OH i dla obrazów, które chcesz usunięć, możesz użyć Splice:

var arr = [0,1,2];
arr.splice(1,1); // position and how many to remove

output: arr = [0,2];

Dokumentacja Splice W3C.

0
Dennis 12 sierpień 2014, 08:51
var myarray = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
var select = [];
var position = 0;
while (position < myarray.length) {
  select.push(myarray[position]);
  if (select.length % 2) position += 9;
  else position -= 8;
}
alert(select);
0
user3917789 12 sierpień 2014, 08:57