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

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

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

Регистрация: Oct 2012
Сообщений: 17
По умолчанию Элементы массива

Всем добрый вечер!
Подскажите, кто знает:
-есть массив
Код AS1/AS2:
var _mas:Array = new Array(cl1, cl2, cl3, cl5, cl6, cl7, cl8);
каждый элемент выбирается случайно и движется:
я поместил случайный элемент с переменную
Код AS1/AS2:
var a = _mas[num];
создал обработчик:
Код AS1/AS2:
 a.onEnterFrame = function (){
			a._y += speed2;}
			if (distance == (a._yscale/2 + cl._yscale/2)){
				delete this.onEnterFrame;
			}
			}
но он собирает все объекты(а) и движет все вместе, а удаляет только выбранный

- как мне поместить на рабочую область(сцену) копию случайно выбранного элемента, а не всех?
как мне остановить клип при соприкосновении с другим клипом?
a._y += speed; - задаю скорость; speed = 0; - останавливаю при соприкосновении
есть какой-то другой способ остановки?


Последний раз редактировалось Терпеливый; 11.02.2013 в 20:51. Причина: забыл
Старый 12.02.2013, 12:05
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 2  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Исходник или весь код + флэшку покажите. Иначе у вас в приведенном коде просто ошибки и не понятно, почему _yscale используется.
__________________
hauts.ru

Старый 13.02.2013, 15:27
Терпеливый вне форума Посмотреть профиль Отправить личное сообщение для Терпеливый Найти все сообщения от Терпеливый
  № 3  
Ответить с цитированием
Терпеливый

Регистрация: Oct 2012
Сообщений: 17
7 объектов на сцене.по идеи они должны были бы вызываться из массива по одному, но я не знаю как это сделать
в общем виде должно быть так:
-выбирается случайный элемент, делается копия элемента массива(не знаю как реализовать)
-задается скорость элемента и проверяется на столкновение с объектом cl4
-если произошло столкновение(cl4) то объект должен остаться на месте
-потом повторяется все заново, но плюс еще и столкновение с этими же объектами
Вложения
Тип файла: rar 07.02.2012.rar (7.5 Кб, 11 просмотров)

Старый 13.02.2013, 16:03
lexa2000lexa вне форума Посмотреть профиль Отправить личное сообщение для lexa2000lexa Найти все сообщения от lexa2000lexa
  № 4  
Ответить с цитированием
lexa2000lexa

Регистрация: Sep 2005
Сообщений: 950
Если я правильно понял, то нужно вот так :
Код AS1/AS2:
function st()
{
	num = Math.floor(Math.random() * _mas.length);
	a = _mas[num];
	a._y = 100;
	a._x = 300;
	if (distance > (a._yscale / 2 + cl4._yscale))
	{
 
		a.onEnterFrame = function()
		{
			a._y += speed2;
		};
		if (distance == (a._yscale / 2 + cl4._yscale / 2))
		{
			delete this.onEnterFrame;
		}
	}
}

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

Регистрация: Oct 2012
Сообщений: 17
Спасибо огромное, lexa2000lexa, все работает, но мне надо выбрать случайный элемент массива и поместить его на сцену(чтобы он падал), при этом 6 остальных должны быть скрыты.Это возможно?Или есть какая-то альтернатива?

Старый 13.02.2013, 19:03
lexa2000lexa вне форума Посмотреть профиль Отправить личное сообщение для lexa2000lexa Найти все сообщения от lexa2000lexa
  № 6  
Ответить с цитированием
lexa2000lexa

Регистрация: Sep 2005
Сообщений: 950
Попробуйте вот так:
Код AS1/AS2:
import flash.geom.Point;
var _mas:Array = new Array("cl1", "cl2", "cl3", "cl5", "cl6", "cl7", "cl8");
var speed = 2;
var speed2 = 4;
var speed3 = 2;
 
 
function st()
{
	var num = Math.floor(Math.random() * _mas.length);
	var a:MovieClip = this.attachMovie(_mas[num], "new" + _mas[num], this.getNextHighestDepth(), {_x:300, _y:100});
	var b:Point = new Point(a._x, a._y);
	var cb4:Point = new Point(cl4._x, cl4._y);
	var distance:Number = Point.distance(b, cb4);
	trace(distance + "  " + (a._yscale / 2 + cl4._yscale));
	if (distance > (a._yscale / 2 + cl4._yscale))
	{
		speed = speed2;
	}
	a.onEnterFrame = function()
	{
		a._y += speed;
 
		if (a.hitTest(cl4))
		{
			a.removeMovieClip();
			delete this.onEnterFrame;
			st();
		}
	};
}
st()
при этом удалите клипы которые у вас движутся.

Старый 13.02.2013, 22:52
Терпеливый вне форума Посмотреть профиль Отправить личное сообщение для Терпеливый Найти все сообщения от Терпеливый
  № 7  
Ответить с цитированием
Терпеливый

Регистрация: Oct 2012
Сообщений: 17
Спасибо большое.Помогло.

как мне можно сравнить переменную с массивом объектов(if (a.hitTest(cl4))), только вместо cl4 массив _mase
Код AS1/AS2:
var _mase:Array = new Array(d1, d2, d3, d4);
для определения их соприкосновения

Код AS1/AS2:
a.removeMovieClip();
delete this.onEnterFrame;
не удалить, а оставить

можно элементом массива записать другой массив?если да то как?


Последний раз редактировалось Терпеливый; 14.02.2013 в 00:37. Причина: вспомнил
Старый 14.02.2013, 11:28
lexa2000lexa вне форума Посмотреть профиль Отправить личное сообщение для lexa2000lexa Найти все сообщения от lexa2000lexa
  № 8  
Ответить с цитированием
lexa2000lexa

Регистрация: Sep 2005
Сообщений: 950
Код AS1/AS2:
a.onEnterFrame = function()
{
	a._y += speed;
	for (var i in _mase)
	{
		if (a.hitTest(_mase[i]))
		{
			break;
			delete this.onEnterFrame;
			st();
		}
 
	}
};

Старый 14.02.2013, 20:05
Терпеливый вне форума Посмотреть профиль Отправить личное сообщение для Терпеливый Найти все сообщения от Терпеливый
  № 9  
Ответить с цитированием
Терпеливый

Регистрация: Oct 2012
Сообщений: 17
Помогло спасибо

у меня вопрос по BitmapData.hitTest

Код AS1/AS2:
var mc_1:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc_1.attachBitmap(myBitmapData, this.getNextHighestDepth());
зачем мы создаем пустой клип(createEmptyMovieClip)?
mc_1.attachBitmap(myBitmapData, this.getNextHighestDepth()); - можно объяснить это?
мы добавляем объект(mc_1) в класс BitmapData и ложем на уровень getNextHighestDepth().правильно?

var destPoint:Point = new Point(myBitmapData.rectangle.x, myBitmapData.rectangle.y);
rectangle.x - это же поворот по оси х. зачем вращать?

это точка для мыши?
var currPoint:Point = new Point();

Старый 14.02.2013, 20:29
Asfel вне форума Посмотреть профиль Отправить личное сообщение для Asfel Найти все сообщения от Asfel
  № 10  
Ответить с цитированием
Asfel

Регистрация: Feb 2013
Адрес: Киев
Сообщений: 76
Отправить сообщение для Asfel с помощью Skype™
1. Пустой мувиклип создается как контейнер для битмап даты т.к она не может отображаться без контейнера...

2. Аттач битмап дата атачит данный битмап к мувиклипу на this.getNextHighestDepth() (самую большую глубину)

3. rectangle.x это x координат квдарата. Тут нету ни 1 слова о вращении почему вдруг это вращение?

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

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

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


 


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


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