2010-08-06 2 views
0

Эта картинная галерея добавляет детей. Он делает , что ему нужно, но бросает ошибку # 2007.Индексирующий массив, не нулевая ошибка AS3

Есть проблема с мусором и дальностью, которую я хочу исправить. Есть ли простое решение для этого?

//PICTURE GALLERY 
var um0:MovieClip = new z0; 
var um1:MovieClip = new z1; 
var um2:MovieClip = new z2; 
var um3:MovieClip = new z3; 
var AR:Array = [um0,um1,um2,um3]; 
var i:int = 0; 
//GO FORWARD THROUGH GALLERY 
b.addEventListener(MouseEvent.CLICK, onClam); 
function onClam(e:MouseEvent){ 
i++; 
containerInstance.addChild(AR[i]); 
} 
//GO BACKWARD THROUGH GALLERY 
d.addEventListener(MouseEvent.CLICK, onClum); 
function onClum(e:MouseEvent){ 
i--; 
containerInstance.addChild(AR[i]); 
} 

ERROR
TypeError: Error #2007: Parameter child must be non-null

ответ

2

Попробуйте это сделать указательным обертку вокруг длины массива (можно также использовать по модулю, но это проще, я думаю):

function onClam(e:MouseEvent){ 
    i++; 
    if(i >= AR.lenght) { 
     i = 0; 
    } 
    containerInstance.addChild(AR[i]); 
} 

function onClum(e:MouseEvent){ 
    i--; 
    if(i < 0) { 
     i = AR.length - 1; 
    } 
    containerInstance.addChild(AR[i]); 
} 
+0

Реализация по модулю для +1 'i = (i + 1)% AR.length;' и для -1 'i = (i + AR.length - 1)% AR.length;' – timrwood

+0

@washwithcare, спасибо за пример по модулю. – pixelGreaser

Смежные вопросы