Памылка 1010 Actionscript 3

я атрымліваю Error # 1010, калі я выкарыстоўваю гэты час цыкла:

while (pos.length>0)
{
    coo = pos.splice(Math.floor(Math.random() * pos.length),1)[0];

    (pos_array[index]).x = coo.x;
    (pos_array[index]).y = coo.y;
    index++;
}

The error says: A term is undefined and has no properties.

Што не так з маёй пятлёй, таму што я выкарыстаў тую ж пятлю для іншых, і я праграм не атрымаў такую ​​памылкі.

Дзякуй за ўвагу.

1
я не konw, што трэба змяніць у кодзе, так як я выкарыстаў той жа код у файле as3, і ўсё было нармальна. але на гэты раз я выкарыстоўваю пакет як класы. Дон »ведаю, чаму не працуе прама зараз
дададзена аўтар CMS, крыніца
усё ў парадку. Я выкарыстаў адладчык, каб убачыць, якую лінію гэта. і памылка ў цыкле. але не ведаю дзе
дададзена аўтар CMS, крыніца
усе яны вызначаны: уаг COO: Аб'ект: вар pos_array: Array = новы Array (); Індэкс вар: UINT = 0;
дададзена аўтар CMS, крыніца
Не магу сказаць, з гэтага кода. «Поз», «pos_array», любы элемент «pos_array», любы элемент «поз» і «індэкс» можа ўсё быць нявызначаным.
дададзена аўтар RIAstar, крыніца
Ці ёсць элемент у «pos_array» ужо існуе, калі вы ўсталёўваеце ўласцівасць сваіх «х»? напрыклад калі вы робіце «(pos_array [0]). х = coo.x», ёсць асобнік класа з атрыбутам й у гэтай пазіцыі ў масіве?
дададзена аўтар RIAstar, крыніца
Што пра элементы ў «позах» і «pos_array»? На якой лініі выкідваецца памылка? У вас няма адладчыка ў вашым распараджэнні?
дададзена аўтар RIAstar, крыніца
пакет v. FLA не праблема. яго павінен быць тут: pos_array [індэкс] . гэта выглядае як pos_array не ўтрымлівае якой-небудзь/досыць значэння.
дададзена аўтар gthmb, крыніца

3 адказы

Не ведаючы, што калекцыя змяшчае, я мяркую, што ён напоўнены DisplayObjects або аб'ект, які мае й і ў ўласцівасці?

Cast спасылкі так, каб кампілятар разумее, што калекцыя змяшчае. Напрыклад:

DisplayObject(pos_array[index]).x = coo.x;
DisplayObject(pos_array[index]).y = coo.y;

... або любы іншы тып вашай калекцыі ўтрымлівае.

0
дададзена
ды масіў змяшчае кліпы, але гэта не рашэнне, таму што я атрымліваю «нявызначаны метад» новую памылку
дададзена аўтар CMS, крыніца
калі я змяніць ўмова цыклу да: «у той час як (pos.length == 0)» гэта працуе
дададзена аўтар CMS, крыніца

Ваш цыкл у той час як разрываецца.

pos.length ніколі не зменіцца і ў рэшце рэшт pos_array [індэкс] будзе па-за межамі.

Калі, калі вы знаходзіцеся па-за межамі з'яўляецца нявызначаным. Так што ў асноўным вы робіце.

undefined.x = coo.x;

І сапраўды гэтак жа, як памылка кажа нявызначанай маюць не маюць уласцівасцяў.

Я не магу бачыць, як гэты цыкл калі-небудзь працаваў.

Паспрабуйце замест гэтага значна чысцей

var savedX:Number = 0
for each( var obj:Object in pos_array ){
  coo = new MovieClip()
  coo = pos.splice(Math.floor(Math.random() * pos.length),1)[0];
  obj.x = savedX;
  obj.y = 0;
  savedX += coo.width;
}
0
дададзена
Быў у душы гэтай раніцай, і ваша праблема з бок аб бок рэч прыйшла ў галаву. Ва ўсякім выпадку я абнавіў свой адказ для вас, каб вырашыць гэтую праблему.
дададзена аўтар The_asMan, крыніца
Адрэдагаваны мой адказ для вас. Калі ласка, майце на фармаце форуму задаць пытанне і атрымаць адказ. Калі вы атрымаеце правільны адказ прыняць яго і адправіць новае пытанне, калі ў вас ёсць яшчэ пытанні.
дададзена аўтар The_asMan, крыніца
Я не ўпэўнены, што код будзе рабіць тое, што вы чакаеце, што рабіць. Я хацеў бы пачаць з праверкі значэння поз і пераканацца, што яны ўсё добрыя месцы.
дададзена аўтар The_asMan, крыніца
ваша логіка памылковая. вы карыстаецеся масіў для захоўвання пазіцый, якія выдатна, аднак, вы доступ да іх выпадкова, які мае магчымасць выкарыстоўваць адну пазіцыю больш чым адзін раз. вам трэба выдаліць элемент з масіва поз, як толькі вы "скарысталі» гэтую пазіцыю.
дададзена аўтар The_asMan, крыніца
я судзімасць, што і ў мяне няма памылкі, але мувики не размешчаны бок аб бок, як яны мелі звычай быць. у цяперашні час яны складзены. Як я магу арганізаваць іх бок? я Allready захоўваюцца пазіцыі ў масіве поз
дададзена аўтар CMS, крыніца
:) Дзякуй за дапамогу
дададзена аўтар CMS, крыніца
гэта працавала, каб арганізаваць іх бок аб бок, але мувики ня змешваюцца адзін з адным. я дзякую вам, што вы ўзялі свой час, каб дапамагчы мне
дададзена аўтар CMS, крыніца
ОК вы можаце сказаць мне спосаб зрабіць гэта. Я захаваў некаторыя эмси ў масіве, і я хачу, каб паставіць гэтыя эмсите на баку прыступкі бакі. як я магу гэта зрабіць? Дзякуй
дададзена аўтар CMS, крыніца
я забыўся выдаліць буркуюць = ...
дададзена аўтар CMS, крыніца
я б зрабіць гэта наступным чынам: для кожнага (VAR OBJ: Аб'ект у pos_array) {COO = pos.splice (Math.floor (Math.random() * pos.length), 1) [0]; obj.x + = loader.width/4; obj.y = 0; калі (х> loader.width) {х = 0; у = loader.height/2; }}
дададзена аўтар CMS, крыніца

Магчыма, <моцны> pos.length і <моцны> pos_array.length не роўныя, калі пачынаецца цыкл.

Паспрабуйце гэта:

while (pos.length>0)
{

    coo = pos.splice(Math.floor(Math.random() * pos.length),1)[0];
    if (pos_array[index])
    {
        (pos_array[index]).x = coo.x;
        (pos_array[index]).y = coo.y;
    }
    index++;

}
0
дададзена