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

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

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

Регистрация: Feb 2015
Сообщений: 10
По умолчанию Взаимодействие двух массивов

МувКлип "yacheyka"(Еxport for ActionScript, class:Yacheyka) размещен на сцене 10 раз:

Код AS3:
//СОЗДАЕМ НА СЦЕНЕ 20 ЯЧЕЕК
//создаем массив "Путь" где хранятся имена каждой ячейки
var myWay:Array = new Array  ;
for (var i=0; i<20; i++)
{
	var yacheyka:Yacheyka = new Yacheyka  ;
	//помещаем экземпляры ячейки из библиотеки на сцену
	addChild(yacheyka);
	// присваиваем имя каждой ячейке
	yacheyka.name = "yach_" + i;
 
	//заполняем масив "Путь" именами всех ячеек;
	myWay.push(yacheyka.name);
	//trace(yacheyka.name);
	trace(myWay[i]);
 
	//координаты ячеек;
	getChildByName(myWay[i]).x = (yacheyka.width+10) * i+150;
	getChildByName(myWay[i]).y = 100;
}
МувКлип "fishka"(Еxport for ActionScript, class:Fishka) размещен на сцене 4 раза:
Код AS3:
//СОЗДАЕМ НА СЦЕНЕ 4 ФИШКИ
//создаем массив "мои фишки" где хранятся значения каждой ячейки
var myFishki:Array = new Array  ;
for (var j=0; j<4; j++)
{
	var fishka:Fishka = new Fishka  ;
	//помещаем экземпляры фишки из библиотеки на сцену
	addChild(fishka);
	// присваиваем имя каждой ячейке
	fishka.name = "fish_" + j;
 
	//заполняем массив "мои фишки" именами всех фишек;
	myFishki.push(fishka.name);
 
 
 
	//координаты фишек
	getChildByName(myFishki[j]).x = (yacheyka.width+10) * j+150;
	getChildByName(myFishki[j]).y = 100;
 
	//создание слушателй для фишек
	getChildByName(myFishki[j]).addEventListener(MouseEvent.MOUSE_OVER,Vibor);
	getChildByName(myFishki[j]).addEventListener(MouseEvent.MOUSE_OUT,Vibor2);
	getChildByName(myFishki[j]).addEventListener(MouseEvent.CLICK,Vibor3);
}
МувКлип "kost"(Еxport for ActionScript, class:Kost) размещен на сцене и умеет генерировать случайное число от 1 до 6:

Код AS3:
//СОЗДАЕМ НА СЦЕНЕ ИГРАЛЬНУЮ КОСТЬ;
var kost:Kost = new Kost  ;
addChild(kost);
kost.x = stage.stageWidth / 2;
kost.y = stage.stageHeight / 2;
 
//ИГРАЛЬНАЯ КОСТЬ ГЕНЕРИРУЕТ СЛУЧАЙНОЕ ЧИСЛО ОТ 1 ДО 6
kost.addEventListener(MouseEvent.CLICK, kubik);
var randNum:Number = 0;
function kubik(evtKubik:MouseEvent)
{
 
	randNum = Math.round(Math.random() * 5 + 1);
	trace("случайное число"+randNum);
}
Фишки умеют реагировать на события мыши:
Код AS3:
//УЧИМ ФИШКИ РЕАГИРОВАТЬ НА ДЕЙСТВИЯ МЫШЬЮ
//функция для наведения мыши на  фишки
function Vibor(evtVibor:MouseEvent)
{
 
	evtVibor.target.gotoAndStop(2);
 
}
 
//функция для убирания мыши с  фишки;
function Vibor2(evtVibor2:MouseEvent)
{
 
 
	evtVibor2.target.gotoAndStop(1);
 
}
И наконец, фишка передвигается после клика мышью:
Код AS3:
//функция клика по фишке;
 
 
function Vibor3(evtVibor3:MouseEvent)
{
	var indexMyFishki:Number;
	var newPosition:Number;
 
	evtVibor3.target.gotoAndStop(3);
 
	//я могу получить имя выбраной фишки:;
	trace("имя выбраной фишки_"+evtVibor3.target.name);
	//индекс в массиве "мои фишки"
	trace("индекс в массиве Мои фишки"+ myFishki.indexOf(evtVibor3.target.name));
	//могу прибавить к индексу сгенерированное заранее число randNum
	indexMyFishki = myFishki.indexOf(evtVibor3.target.name);
	newPosition = indexMyFishki + randNum;
 
 
	getChildByName(myFishki[indexMyFishki]).x = getChildByName(myWay[newPosition]).x;
	getChildByName(myFishki[indexMyFishki]).y = getChildByName(myWay[newPosition]).y;
 
}
Суть вопроса: что нужно сделать, что бы новое значение randNum прибавлялось к обновленной позиции фишки? Сейчас новое значение randNum прибавляется к indexMyFishki , которое является , по сути номером в массиве. Может быть нужно ввести еще одну переменную newPosition2, но как передать в нее новую позицию фишки?


Последний раз редактировалось Dogonyalka; 23.02.2015 в 18:23.
Старый 23.02.2015, 17:26
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 2  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Фишка лежит в evtVibor3.target. Можно сделать так.

Код AS3:
evtVibor3.target.x = blabla;
evtVibor3.target.y = blabla;

Старый 23.02.2015, 18:20
Dogonyalka вне форума Посмотреть профиль Отправить личное сообщение для Dogonyalka Найти все сообщения от Dogonyalka
  № 3  
Ответить с цитированием
Dogonyalka

Регистрация: Feb 2015
Сообщений: 10
Цитата:
Сообщение от callme Посмотреть сообщение
Фишка лежит в evtVibor3.target. Можно сделать так.

Код AS3:
evtVibor3.target.x = blabla;
evtVibor3.target.y = blabla;
А что это даст? Ведь обновление идет через переменную randNum. Фактически я присваиваю выбранной фишке координаты ячейки, которую я ищу через индекс массива, в котором ячейка и находится.

Старый 23.02.2015, 18:45
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 4  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Код AS3:
function Vibor3(evtVibor3:MouseEvent)
{
 
 
    // добавьте в самый конец функции
    myFishki[newPosition] = myFishki[indexMyFishki];
    myFishki[indexMyFishki] = null;
}

Старый 23.02.2015, 19:15
Dogonyalka вне форума Посмотреть профиль Отправить личное сообщение для Dogonyalka Найти все сообщения от Dogonyalka
  № 5  
Ответить с цитированием
Dogonyalka

Регистрация: Feb 2015
Сообщений: 10
callme Большое Вам спасибо!

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

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

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


 


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


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