Почему массив остается без изменений?
|
|
Gavolot | Дата: Вторник, 03 Июля 2012, 00:11 | Сообщение # 1 |
Последователь Тени
Сейчас нет на сайте
| Просто у меня все так устроено, что мне надо чтобы массив в функции, который передается в нее как параметр изменялся прямо во время функции, но и чтобы функция возвращала int значения. Code function razdiRnd(Colode:Array):int { var elementRnd_R:int = Math.random()*Colode.length; var el_R:int = 0; if (Colode.length > 3) { while(elementRnd_R == 0 || tempRnd_R == elementRnd_R ) { elementRnd_R = Math.random()*Colode.length-1; } } else elementRnd_R = Colode.shift(); trace(elementRnd_R); tempRnd_R = elementRnd_R; //Кое-как с костылями мы добились нормальной работы //Вытягивания "случайной" карты, пока элементов не //становится 3 if (Colode.length>3) { el_R = Colode[elementRnd_R]; return el_R;//Вместо показа карты мы возвращаем карту Colode.splice(elementRnd_R, 1); } else return elementRnd_R;//Альтернативный возврат карты rezTxt.text = Colode.toString(); }
Сколько не пытался, он изменять массив после выполнения функции отказывается. Да там есть костыли, но с другой кнопкой оно работает нормально, та другая кнопка можно сказать копия этой функции только используется в событии щелчка мыши для вытягивания из колоды случайной карты, а эту я сделал для раздачи карт по 6 двум игрокам, пробовал удалять вытянутый элемент сразу после выполнения функции получилось не очень, не сработало, поэтому надо чтобы массив менялся после выполнения функции и все будет без багов...Добавлено (03.07.2012, 00:11) --------------------------------------------- И документацию от Адобы и Колина я читал уже. Там вроде сказали, если объект не примитивный, то оно будет меняться, массив не примитивный объект, но не меняется он после выполнения функции.
В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
Сообщение отредактировал Gavolot - Вторник, 03 Июля 2012, 00:00 |
|
| |
iLORd | Дата: Вторник, 03 Июля 2012, 00:31 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Не особо вдуплил логику кода... Ты передаёшь какой-то массив как аргумент функции и хочешь, чтобы функция меняла этот изначальный массив, так? Но она меняет только локальный массив Colode, но не изначальный? Если так, то, по-моему, так и должно быть) Почему бы не работать напрямую с массивом, вместо того, чтоб передавать его как аргумент?
Bread Games - пилим ураганный экшен!
|
|
| |
Gavolot | Дата: Вторник, 03 Июля 2012, 00:40 | Сообщение # 3 |
Последователь Тени
Сейчас нет на сайте
| iLORd, Там не много проблема с тем чтобы с ним на прямую работать =))) я понимаю, что придется наверное отказаться от функции, но хотелось бы блин, чтобы функция его меняла зараза такая. =) Так получится не удобно.
В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
|
|
| |
iLORd | Дата: Вторник, 03 Июля 2012, 00:45 | Сообщение # 4 |
заслуженный участник
Сейчас нет на сайте
| Quote (Gavolot) Там не много проблема с тем чтобы с ним на прямую работать =))) Как?! Как ты это сделал?) А сделать временную переменную не получается тоже?
Bread Games - пилим ураганный экшен!
|
|
| |
Gavolot | Дата: Вторник, 03 Июля 2012, 00:49 | Сообщение # 5 |
Последователь Тени
Сейчас нет на сайте
| iLORd, ну там такая фишка, что придется либо кучу кода делать с кучей костылей, либо все переписывать и прийти к тому-же самому =))) Пытаюсь раздавать из колоды случайную карту, вижу что как-то не получается, буду наверное раздавать по старому методу, одна-вторая-одна-вторая... Ведь на кнопку "Вытянуть" у меня получилось вытягивать одну карту из колоды правильно, проверял =) Слушай а нельзя как-то в ас3 искусственно вызвать пользовательское событие? Ну чтобы программа сама кликнула на кнопку?
В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
Сообщение отредактировал Gavolot - Вторник, 03 Июля 2012, 00:49 |
|
| |
iLORd | Дата: Вторник, 03 Июля 2012, 00:53 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| Quote (Gavolot) Слушай а нельзя как-то в ас3 искусственно вызвать пользовательское событие? Ну чтобы программа сама кликнула на кнопку? Не встречал такого...
А как в кнопке всё может работать, а в функции - нет? о_О Покажи, что делает кнопка, что ли)
Bread Games - пилим ураганный экшен!
|
|
| |
Gavolot | Дата: Вторник, 03 Июля 2012, 00:53 | Сообщение # 7 |
Последователь Тени
Сейчас нет на сайте
| iLORd, А у тебя нема флеша? Я бы кинул хоть ролик или исходник чтобы поглядел, он весит не много если роликом. Хоть поймешь о чем это я тут =)
В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
|
|
| |
iLORd | Дата: Вторник, 03 Июля 2012, 00:56 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| Флеш есть, но я сейчас не с основного компьютера, заценить всё смогу не раньше среды.
Bread Games - пилим ураганный экшен!
|
|
| |
Gavolot | Дата: Вторник, 03 Июля 2012, 00:59 | Сообщение # 9 |
Последователь Тени
Сейчас нет на сайте
| iLORd, Не ну там надо не заценивать =) А просто посмотреть, потому-что на заценку еще долго тянуть не будет, пока эта игруха не попадет в текстовый квест как мини игра. Добавлено (03.07.2012, 00:59) --------------------------------------------- А вот это кнопка: Code //Вытягивание случайной карты из колоды function vytiRnd(e:MouseEvent):void { var elementRnd:int = Math.random()*Coloda.length; var el:int = 0; if (Coloda.length > 3) { while(elementRnd == 0 || tempRnd == elementRnd ) { elementRnd = Math.random()*Coloda.length-1; } } else elementRnd = Coloda.shift(); trace(elementRnd); tempRnd = elementRnd; //Кое-как с костылями мы добились нормальной работы //Вытягивания "случайной" карты, пока элементов не //становится 3 if (Coloda.length>3) { el = Coloda[elementRnd]; Carta.gotoAndStop(el); Coloda.splice(elementRnd, 1); } else Carta.gotoAndStop(elementRnd); rezTxt.text = Coloda.toString(); } Я не зря говорил, что использовал тот же код.
В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
|
|
| |
iLORd | Дата: Вторник, 03 Июля 2012, 01:12 | Сообщение # 10 |
заслуженный участник
Сейчас нет на сайте
| Ну, в одном случае у тебя внешняя переменная Coloda, а в другом - внутренняя Colode. Что может мешать обращаться в первом случае тоже к массиву, я не могу даже вообразить)
Bread Games - пилим ураганный экшен!
|
|
| |
Gavolot | Дата: Вторник, 03 Июля 2012, 01:49 | Сообщение # 11 |
Последователь Тени
Сейчас нет на сайте
| та тут такая фишка, что событийные функции работают как функции, которые нормально изменяют Coloda, а обычные функции не хотят ее менять. Добавлено (03.07.2012, 01:49) --------------------------------------------- Я в принципе решил проблему проще, массив все равно перемешивается, поэтому я раздаю карты по простому принципу человека, первую первому игроку, вторую второму и там пока у них по шесть не будет, зато с этим проблем нету.
В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
|
|
| |