Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.08.2013, 00:29
Anabel вне форума Посмотреть профиль Отправить личное сообщение для Anabel Найти все сообщения от Anabel
  № 1  
Ответить с цитированием
Anabel

Регистрация: Apr 2013
Сообщений: 82
По умолчанию Передача информации из массива

Отрабатываю все варианты использования массивов, встретил вот такую проблему(пишу в кадрах):
Есть массив, он расположен в 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
т.е. ничего не поменялось! Как сделать, что бы значения из следующих кадров передавались в массив?

Старый 03.08.2013, 01:11
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 2  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Ну у тебя исполняется код 3-го кадра. А чтобы код исполнялся в каждом кадре клипа есть событие ENTER_FRAME

Старый 03.08.2013, 01:12
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 3  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
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

Старый 03.08.2013, 01:16
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 4  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
дык так и получается

Добавлено через 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
}

Старый 03.08.2013, 16:22
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 5  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Пишите в одном кадре, проблем не будет.

Старый 03.08.2013, 16:51
Котейка вне форума Посмотреть профиль Отправить личное сообщение для Котейка Найти все сообщения от Котейка
  № 6  
Ответить с цитированием
Котейка
 
Аватар для Котейка

Регистрация: Aug 2013
Сообщений: 56
Как вариант решения "малой кровью", в третьем кадре перед созданием массива проверяйте, что его еще нет
Код AS3:
if(!mas_inventory_yn) var mas_inventory_yn:Array = [1, 0, 0, 0, 0, 0, 0];

Старый 03.08.2013, 20:03
Anabel вне форума Посмотреть профиль Отправить личное сообщение для Anabel Найти все сообщения от Anabel
  № 7  
Ответить с цитированием
Anabel

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

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

Старый 03.08.2013, 20:41
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 8  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
а решение оказалось проще:
Оно не проще - Вы сделали то, что Вам советовали. И обычными методами Вы не сможете сделать, что то хорошее. Правда если вы такой цели себе и не ставили, то кадры это самое то. А по теме, код в классах - это и есть проще.

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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