2015-04-19 8 views
0

Программирование образовательной программы с помощью фракций, вы можете коснуться части дроби на цифровом экране (или экране ПК), который становится цветным/активным. Коснитесь или щелкните его второй раз, и он снова станет белым/неактивным. И так далее ...Flash многомерный массив movieclips

Чтобы сбросить долю со всеми ее цветными частями на белый, я хочу нажать одну кнопку, когда вы вызываете функцию resetFraction. Пожалуйста, взгляните на приведенный ниже код, кажется, что он ошибочен в двумерном массиве с мувиклипами - без изменений от цветной до белой части. Все массивы, содержащие имена мувиклипов:

//array with fractions containing the (real) movieclips of parts 
//mc_frac1 has one part, mc_frac2 has two parts, and so on 
var fractionAr : Array = new Array(mc_frac1, mc_frac2, mc_frac3, mc_frac4, mc_frac5); 

//array with max-index for partAr, see below 
var maxPart : Array = new Array(1,2,3,4,5); 

//array with parts, 2 dimensional with a variable index per fraction 
var partAr : Array = new Array(
     new Array(mc_part1_1), 
     new Array(mc_part2_1, mc_part2_2), 
     new Array(mc_part3_1, mc_part3_2, mc_part3_3), 
     new Array(mc_part4_1, mc_part4_2, mc_part4_3, mc_part4_4), 
     new Array(mc_part5_1, mc_part5_2, mc_part5_3, mc_part5_4, mc_part5_5)); 

//put all parts back to 'untouched' (color white) 
function resetFraction(var FracNum : Number) { 
var p : Number = FracNum; 
for (var i = 0; i < maxPart[p]; i++) { 
    fractionAr[p-1].partAr[p-1][i].gotoAndStop(1); 
    } 
} 

Это ниже код разделен на порции, чтобы увидеть, где он идет не так:

p = 4; 
mc_frac4.mc_part4_2.gotoAndStop(1); //works 
fracAr[p-1].mc_part4_2.gotoAndStop(1); //works 
//but 
fracAr[p-1].partAr[3][1].gotoAndStop(1); //does nothing 

Двумерный массив, кажется, проблема.

Кто-нибудь может мне помочь? Это экономит много кода, чтобы реализовать это с помощью одной функции.

Большое спасибо.

ответ

0

Я ухожу!

Вместо точки я использовать операторы Acces массива ([]) и кавычки (»«) в массиве partAr (.):

var partAr : Array = 
     new Array(
     new Array("mc_part1_1"), 
     new Array("mc_part2_1", "mc_part2_2"), and so on... 

а четвертая строка в функции становится этим:

function resetFraction(var FracNum : Number) { 
var p : Number = FracNum; 
for (var i = 0; i < maxPart[p]; i++) { 
    fractionAr[p-1][partAr[p-1][i]].gotoAndStop(1); 
    } 
} 

Простой, не так ли?

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

  • Нет связанных вопросов^_^