Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Передача информации из массива (http://www.flasher.ru/forum/showthread.php?t=202700)

Anabel 03.08.2013 00:29

Передача информации из массива
 
Отрабатываю все варианты использования массивов, встретил вот такую проблему(пишу в кадрах):
Есть массив, он расположен в 3-м кадре:
Код AS3:

var mas_inventory_yn:Array = [1, 0, 0, 0, 0, 0, 0];
trace (mas_inventory_yn);

Захожу в каждые последующие кадры и активирую такой код:
Код AS3:

heider.aps.addEventListener(MouseEvent.CLICK, gotoAbout);
 
function gotoAbout (e:MouseEvent) {
        trace (mas_inventory_yn);
        mas_inventory_yn[1] = 1;
        heider.aps.gotoAndStop(2);
}

В каждом кадре с помощью trace показывается, что массив был активирован и выводит к примеру:
Код AS3:

1, 1, 0, 0, 0, 0, 0

Чтобы активировать 10-й кадр необходимо, что бы были все единички. Чтобы зайти в другой кадр и активировать единичку, необходимо вернуться в 3-й и зайти в другой. Но вот в третьем
Код AS3:

trace (mas_inventory_yn);

выводит информацию
Код AS3:

1, 0, 0, 0, 0, 0, 0

т.е. ничего не поменялось! Как сделать, что бы значения из следующих кадров передавались в массив?

Babylon 03.08.2013 01:11

Ну у тебя исполняется код 3-го кадра. А чтобы код исполнялся в каждом кадре клипа есть событие ENTER_FRAME

Akopalipsis 03.08.2013 01:12

Anabel а у Вас не получается так, что при возврате на третий кадр, вы создаете новый массив с первоначальными данными?

Добавлено через 2 минуты
Код AS3:

var mas_inventory_yn:Array = [1, 0, 0, 0, 0, 0, 0];//тут вы создали
trace (mas_inventory_yn);//тут проверили и получилось 1, 0, 0, 0, 0, 0, 0
//где то тут изменили
//где то тут нажали вернуться и получается, что создали по новому
var mas_inventory_yn:Array = [1, 0, 0, 0, 0, 0, 0];//тут вы создали
trace (mas_inventory_yn);//тут проверили и получилось 1, 0, 0, 0, 0, 0, 0


Babylon 03.08.2013 01:16

дык так и получается :)

Добавлено через 6 минут
Код AS3:

this.addEventListener(Event.ENTER_FRAME,enterFrameListener);
 
private function enterFrameListener(event:Event):void {
 
//то, что происходит каждый кадр
var mc:MovieClip= event.target as MovieClip
mas_inventory_yn[mc.currentFrame]=1
}


MikroAcse 03.08.2013 16:22

Пишите в одном кадре, проблем не будет.

Котейка 03.08.2013 16:51

Как вариант решения "малой кровью", в третьем кадре перед созданием массива проверяйте, что его еще нет
Код AS3:

if(!mas_inventory_yn) var mas_inventory_yn:Array = [1, 0, 0, 0, 0, 0, 0];


Anabel 03.08.2013 20:03

Возможно я что-то не понял в кодах, но ни один из ни не работал на 100% так как мне нужно. На 70% работало, а на 100% нет. Хотя проблему я всё же решил (далее идёт лирическое отступление и воспоминание):
Пару месяцев назад, когда я только начал увлекаться программированием, я прочитал статью одного программиста, про то, что программистам свойственно всё усложнять. Он это рассказывал на своём опыте и своих коллег, когда они решили решить житейскую задачку "программным" путём, так как "обычные" методы были по их мнению слишком затратные, непривычные и забирали много времени Но так как дизайнеры за ними не успевали и у них было достаточно времени, то решили решить и "программными" и "обычными" методами, что бы посмотреть какие легче. К их немалому удивлению "обычные" оказались намного эффективней, хотя сначала так вовсе и не казалось. И возвращаясь к теме: тут были и советы, и коды, а решение оказалось проще: массив просто нужно было перенести во второй кадр)) Ну или в первый, но я перенёс во второй) Чтобы возвращаясь в 3-й кадр он не создавался каждый раз новый, а был использован из предыдущего кадра.

Добавлено через 32 секунды
Спасибо всем за помощь :)

Akopalipsis 03.08.2013 20:41

Цитата:

а решение оказалось проще:
Оно не проще - Вы сделали то, что Вам советовали. И обычными методами Вы не сможете сделать, что то хорошее. Правда если вы такой цели себе и не ставили, то кадры это самое то. А по теме, код в классах - это и есть проще.


Часовой пояс GMT +4, время: 09:02.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.