Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   перейти к след. элементу массива (http://www.flasher.ru/forum/showthread.php?t=110231)

Danss 29.03.2008 20:45

перейти к след. элементу массива
 
Подскажите, пожалуйста, как переходить к след. элементу массива? не конкретному, а следующему или предыдущему. У меня такой пример: есть несколько картинок в ряд и по бокам этих картинок стоят кпопки "назад" и "вперед" в общем при нажатии,допустим на кпопку "вправо" нужно чтобы от текущей картинки программа обращалась к соседней справа. В каждой картинки есть символ тени которая угосает когда обращаешься к конкретной картинки и картинка становиться светлее. Тени я поместил в массив. Подскажите, плз, как реализовать такой механизм? при помощи цикла может?

Fernando Costa 29.03.2008 21:12

как-нибудь так:
Код:

var arr:Array = [mcDsd,mcWasd,mcRasdfs,mcFffff]
var n:Number = arr.length;
for(var i=0; i<n; i++){
    arr[i].index = i;
}
trace(arr[mcRasdf.index-1])


Danss 29.03.2008 21:14

Спс, сейчас попробую :)

Danss 29.03.2008 22:10

я попробовал, но не выходит то, что я хочу:


Код:

var AllBotlles:Array = [bottleButtonHolder.botkes_holder.shadow1, bottleButtonHolder.botkes_holder.shadow2, bottleButtonHolder.botkes_holder.shadow3, bottleButtonHolder.botkes_holder.shadow4];
 bottleButtonHolder.nt_btn.onRelease = function() {
               
var n:Number =AllBotlles.length;
for(var i=0; i<n; i++){
    AllBotlles[i].index = i;
       
       
       
}
// trace(AllBotlles[i].index);
trace("ddddddddd "+ AllBotlles[ bottleButtonHolder.botkes_holder.shadow1.index+1])
 
 
 
 }


При нажатии на кпопку "вправо" трейс выводит 2й элемент. А как сделать так чтобы при каждой нажатии на "вправо" выводил след элемент? 1 раз нажал трейс показал - 1 , 2й раз - показывает 2.... и т.д.

iNils 29.03.2008 22:28

Цитата:

Сообщение от Danss
не конкретному, а следующему или предыдущему.

У самого массива нет таких понятий, текущей, следующий или предыдущий. К любому элементу массива можно обратиться только по индексу.
Поэтому вы должны завести переменную, которая хранит индекс текущего элемента и соответснно делать ++ или --, для того чтобы получить нужный индекс (при условии, что элементы идут без пропуска.)

Danss 29.03.2008 23:19

спасибо за ответ, но я еще слабоват в ас, как именно это реализовать? можете написать простой пример, пожалуйста.

Danss 30.03.2008 00:41

В общем я пытался сделать так:

Код:

var AllBottles:Array = [shadow1,shadow2, shadow3, shadow4];
nt_btn.onRelease = function() {
               
var n:Number =AllBottles.length;
for(var i=0; i<n; i++){
    AllBottles[i].index = i;
       
}
var indexArr = AllBottles[0];
indexArr++;
trace(indexArr);

Но трейс выводит мне NaN
Помогите кто нибудь, плз, очень надо ))

MrPoma 30.03.2008 03:09

Код:

var allBottles:Array = [shadow1, shadow2, shadow3, shadow4];
var currentIndex:Number = 0;

btn.onRelease = function(){
        trace(allBottles[currentIndex]);
        currentIndex ++;
       
        if(currentIndex >= allBottles.length){
                currentIndex = 0;
        }
}


Fernando Costa 30.03.2008 03:17

это что по вашему должно случиться то?
Код:

var indexArr = AllBottles[0];
indexArr++;

AllBottles[0] - это же не нумбер. вот вам и НаН

Danss 30.03.2008 12:08

Спасибо, заработало :)


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

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