2015-03-23 2 views
1

У меня возникли проблемы с AS3, в частности, с сообщением об ошибке «Ошибка типа« Ошибка № 1006: значение не является функцией ». Я абсолютный новичок, но я проверил другие вопросы stackOverflow, связанные с ошибкой № 1006 и на других сайтах, и не смог найти источник моей проблемы.Actionscript 3 TypeError: Ошибка # 1006: значение не является функцией. Не удалось найти проблему

Ошибка появляется, когда я пытаюсь вызвать функцию newQueen.

function newQueen(queenType):void 
{ 
    switch (queenType) 
    { 
     case 1 : 
      guardianLoyalty = 0; 
      break; 
     case 2 : 
      gathererLoyalty = 0; 
      break; 
     case 3 : 
      acolyteLoyalty = 0; 
      break; 
     case 4 : 
      vesselLoyalty = 0; 
      break; 
     default : 
      break; 
    } 
    queenRndTrait1 = randRange(1,queenTraitArray.length); 
    queenRndTrait2 = randRange(1,queenTraitArray.length); 

    queenTraitArray[queenRndTrait1](queenType,1); 
    queenTraitArray[queenRndTrait2](queenType,2); 

    queenRndDescription = randRange(1,queenDescriptionArray.length); 
    queenDescriptionArray[queenRndDescription](queenType); 

    queenRndName = randRange(1,queenNameArray.length); 
    queenNameArray[queenRndName](queenType); 
} 

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

Edit:

var queenDescriptionArray:Array = new Array(queenDescription1); 

function queenDescription1(queenType):void 
{ 
    switch (queenType) 
    { 
     case 1 : 
      guardianQueenDescription = "Dummy Description One"; 
      break; 
     case 2 : 
      gathererQueenDescription = "Dummy Description One"; 
      break; 
     case 3 : 
      acolyteQueenDescription = "Dummy Description One"; 
      break; 
     case 4 : 
      vesselQueenDescription = "Dummy Description One"; 
      break; 
     default : 
      break; 
    } 
} 

Я был вызов функции, как newQueen (1);

Edit 2, решаемая:

Спасибо, пустой!

Я решил эту проблему, прежде чем она возникла в других частях моей программы, я не мог понять, что было по-другому в этой функции! (Поскольку я новичок, я стараюсь не копировать и вставлять, даже мои собственные код)

решение было добавить "-1" до конца рандомизации линий, например, так:

queenRndTrait1 = randRange(1,queenTraitArray.length)-1; 
+0

как вы вызова функции? какие данные вы передаете? вы можете привести пример, пожалуйста? –

+0

Для чего предназначены эти массивы? Что находится в этих массивах? Что вы хотите с ними делать? – null

ответ

0

Update:

Проходите 1 в качестве первого аргумента ваша функция создает случайный индекс. Массивы индексы начинаются с 0.


Эти линии, вероятно, вызывает ошибку:

queenTraitArray[queenRndTrait1](queenType,1); 
queenTraitArray[queenRndTrait2](queenType,2); 

queenDescriptionArray[queenRndDescription](queenType); 

queenNameArray[queenRndName](queenType); 

Они имеют общую картину. Вы обращаетесь массивов здесь, ничего плохого в том, что:

array[index]; 

Это будет извлекать элемент по индексу.

Сейчас здесь идет возможные проблемы: добавить скобку после этого:

array[index](someStuff); 

Скобки могут использовать для вызова функций, которые нормально и работает отлично до тех пор, как элемент массива по этому индексу является функцией.

Но, видимо, элемент массива не является функцией, как сообщает вам об ошибке.

Неясно, что вы пытаетесь сделать, но проблема скорее всего вызвана неправильным использованием некоторых операторов (как скобка)

+0

Спасибо :) Я должен был упомянуть, что массивы действительно содержат функции! – Ark

+0

@Ark, возможно, те элементы, которые вы намереваетесь получить, действительно являются функциями, но что, если вы на самом деле не обращаетесь к ним? См. Обновление моего ответа =) – null

+0

Спасибо Null! Это решение получило трюк! Я смущен, потому что я разрезал эту проблему в другом месте, прежде чем это произошло, так что это был первый раз, когда я увидел ошибку, и все СМОТРЕТЬ так же, как и мои другие аналогичные функции: P – Ark

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