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

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

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

Регистрация: Sep 2010
Адрес: Красноярск
Сообщений: 217
Отправить сообщение для Lyso с помощью Skype™
По умолчанию Передвижение всех элементов массива по .x и .y координатам.

Продолжаю улучшать урок, сейчас у меня проблема с передвижением всех шаров вверх и вниз.
Написал функцию:
Код AS3:
public function reportKeyUp() {
	for (var i=0; i<allBalls.length; i++) {
		var port = allBalls[i];
		port.y -=  10;
	}
}
Включил функцию и вроде должно всё работать, но мячи подлетают при нажатии кнопки мыши, а не "KeyUp". Что делать? И надо ли вообще использовать цикл для поднятия всех шаров?


Последний раз редактировалось iNils; 06.12.2010 в 12:56.
Старый 06.12.2010, 13:00
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
но мячи подлетают при нажатии кнопки мыши, а не "KeyUp".
А причем тут код выше? Значит подписались на клавиатуру, а не на мышь.
Цитата:
И надо ли вообще использовать цикл для поднятия всех шаров?
Если скорость у всех шаров одна, то можно поместить их в контейнер и поднимать его.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 06.12.2010, 13:02
Lyso вне форума Посмотреть профиль Отправить личное сообщение для Lyso Посетить домашнюю страницу Lyso Найти все сообщения от Lyso
  № 3  
Ответить с цитированием
Lyso

Регистрация: Sep 2010
Адрес: Красноярск
Сообщений: 217
Отправить сообщение для Lyso с помощью Skype™
Каким образом, не доскажите? Скорость одна, а как засунуть все элементы массива в контейнер?

Старый 06.12.2010, 13:05
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Это зависит от того, как вы их создавали. Либо программно, либо на сцене Flash IDE.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 06.12.2010, 13:12
Lyso вне форума Посмотреть профиль Отправить личное сообщение для Lyso Посетить домашнюю страницу Lyso Найти все сообщения от Lyso
  № 5  
Ответить с цитированием
Lyso

Регистрация: Sep 2010
Адрес: Красноярск
Сообщений: 217
Отправить сообщение для Lyso с помощью Skype™
Могу скинуть исходник:
http://*****************/files/6otbhyx0m

Старый 06.12.2010, 13:20
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
1. Файлы надо выкладывать на форум, а не туда где постоянно пишут "ВНИМАНИЕ! Вы исчерпали лимит подключений! Попробуйте повторить через XX минут(ы). "
2. У меня CS3, поэтому, если у вас fla версии выше, то придется ждать кого-нибудь другого.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 06.12.2010, 13:26
Lyso вне форума Посмотреть профиль Отправить личное сообщение для Lyso Посетить домашнюю страницу Lyso Найти все сообщения от Lyso
  № 7  
Ответить с цитированием
Lyso

Регистрация: Sep 2010
Адрес: Красноярск
Сообщений: 217
Отправить сообщение для Lyso с помощью Skype™
А как кинуть на форум? Вот код двух файлов:
1 (balls.fla)
Код AS3:
import flash.display.Sprite; 
import flash.text.*; 
 
stage.addEventListener(MouseEvent.CLICK,addBall);
 
function addBall(e:MouseEvent):void{
	var ball:Ball=new Ball();
	addChild(ball);
	ball.x=mouseX;
	ball.y=mouseY;
    myText.text= Ball.allBalls.length.toString(); //Вывод длины массива в текст.
}
2 (Ball.as)
Код AS3:
package 
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.text.*;
	import flash.events.MouseEvent;
	import flash.geom.ColorTransform;
	import flash.events.MouseEvent;
	import flash.ui.Keyboard;
	import flash.events.KeyboardEvent;
 
	public class Ball extends MovieClip
	{
		public static var allBalls:Array = [];
		var xspeed:Number = -10 + Math.random() * 20;
		var yspeed:Number = -5;
		var grav:Number = 1;
		var radius:Number;
		public var up:Boolean = false;
		public var down:Boolean = false;
		public var left:Boolean = false;
		public var right:Boolean = false;
 
		public function Ball()
		{
			var colorTransform:ColorTransform = new ColorTransform();
			colorTransform.alphaMultiplier = 1;
			colorTransform.redOffset = Math.random() * 4 + 7;
			colorTransform.greenMultiplier = Math.random() * 3;
			transform.colorTransform = colorTransform;
			scaleX = scaleY = Math.random() * 0.5 + 0.5;
			radius = width / 2;
			allBalls.push(this);
			addEventListener(Event.ENTER_FRAME,onFrame);//Слушатель событый, в каждый кадр.
		}
 
		}
		public function onFrame(e:Event):void
		{
			yspeed +=  grav;
			xspeed * +0.9;
			y +=  yspeed;
			x +=  xspeed;
			rotation = x * 2;
 
			hitBall();
			hitStage();
		}
 
		public function hitBall():void
		{
			for (var i=0; i<allBalls.length; i++)
			{
				var curBall = allBalls[i];
				var minDist = curBall.radius + radius;
				var dist = distance(curBall);
				if (curBall != this && dist < minDist)
				{
					var collisionDist=(dist-minDist)/2;
					var dx=(curBall.x-x)/dist*collisionDist;
					var dy=(curBall.y-y)/dist*collisionDist;
 
					x +=  dx;
					xspeed +=  dx;
					y +=  dy;
					yspeed +=  dy;
 
					curBall.x -=  dx;
					curBall.xspeed -=  dx;
					curBall.y -=  dy;
					curBall.yspeed -=  dy;
				}
			}
		}
 
		public function distance(obj:Ball):Number
		{
			var dx = obj.x - x;
			var dy = obj.y - y;
			return Math.sqrt(dx*dx+dy*dy);
		}
 
		public function hitStage():void
		{
			if (x > 300 - radius)
			{
				x = 300 - radius;
				xspeed = 0;
			}
			if (x < radius)
			{
				x = radius;
				xspeed = 0;
			}
			if (y > 300 - radius)
			{
				y = 300 - radius;
				yspeed =  -  yspeed * 0.2;
				xspeed = 0;
			}
		}
	}
}
Как сделать чтобы весь массив при нажатии на стрелки поднимался или двигался по сторонам? То есть координаты .y и .x...

Старый 06.12.2010, 15:12
Lyso вне форума Посмотреть профиль Отправить личное сообщение для Lyso Посетить домашнюю страницу Lyso Найти все сообщения от Lyso
  № 9  
Ответить с цитированием
Lyso

Регистрация: Sep 2010
Адрес: Красноярск
Сообщений: 217
Отправить сообщение для Lyso с помощью Skype™
У меня не получается ничего сделать, я делаю прослушиватель событий, но он мячи не реагируют на движение. Покажите пожалуйста как надо сделать...

Старый 06.12.2010, 15:22
medvedya2 вне форума Посмотреть профиль Отправить личное сообщение для medvedya2 Найти все сообщения от medvedya2
  № 10  
Ответить с цитированием
medvedya2
[+1 09.03.11]

Регистрация: Mar 2010
Сообщений: 128
Вы хотите сделать что шары на кнопку клавиатуры вниз спускались, а на кнопку верх поднимались?

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

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

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


 


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


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