PDA

Просмотр полной версии : перейти к след. элементу массива


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
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
Спасибо, заработало :)

Danss
31.03.2008, 14:38
Вот я вернулся опять :) я думал сделав трейсом все получиться и на клипах, но че то не получаетс.Подскажите плиз как и что нужно добавить?



var AllBotlles:Array = [shadow1,shadow2,shadow3,shadow4];
var currentIndex:Number = 0;
nt_btn.onRelease = function() {
trace(AllBotlles[currentIndex]);

currentIndex ++;



if(currentIndex >= AllBotlles.length){
currentIndex = 0;
}
}




Заранее благодарю. :)

MrPoma
31.03.2008, 22:34
Не понятно чего Вы хотите. Код на клип чтоли повесить?

Danss
01.04.2008, 18:45
не совсем на клип, хочу чтобы при клике на кнопку вправо или влево, клип (shadow1 или shadow2 и т.д.)уменьшал alpha до нуля...shadow это затемнение на картинках, которые должны осветлсяться, соответственно картинка под ними тоже светлее. ... трейсом переход от 1 до 4 го символа работает, но как это визуально реализовать не совсем пойму, как обьяснить программе что когда она перешла на текущий клип shadow то делать то то...а в данном случае уменьшать alpha до нуля. подскажите плз как сделать такое?