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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.03.2011, 13:02
cr0w312 вне форума Посмотреть профиль Отправить личное сообщение для cr0w312 Найти все сообщения от cr0w312
  № 11  
Ответить с цитированием
cr0w312
 
Аватар для cr0w312

Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
2kseniya, а есть разница между кодом в кадре и кодом в классе? Ну всмысле в чем плюсы, минусы?

Старый 20.03.2011, 13:07
kseniya вне форума Посмотреть профиль Отправить личное сообщение для kseniya Найти все сообщения от kseniya
  № 12  
Ответить с цитированием
kseniya
 
Аватар для kseniya

Регистрация: Oct 2010
Адрес: Новосиб
Сообщений: 122
писать в кадрах зло)
конечно лучше в классе, например:
Код AS3:
package {
	import flash.display.Sprite;
	public class Ball extends Sprite {
		public var mc_speedXFROM:Number = 0;
		public var mc_speedYFROM:Number = 0;
		public function Ball() {
		}
	}
 
}
такой способ хранения лучше чем хранить в массиве. меньше путаницы и проблем.


Последний раз редактировалось kseniya; 20.03.2011 в 13:09.
Старый 20.03.2011, 13:11
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 13  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Не смог открыть твой пример.
Написал свой.

Код AS3:
package{
	import flash.display.Sprite;
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.utils.Dictionary;
	import flash.ui.Keyboard;
	import flash.display.DisplayObject;
	import flash.display.DisplayObjectContainer;
	import flashx.textLayout.formats.Direction;
	import flash.geom.Point;
	import flash.events.MouseEvent;
 
 
  public class Main extends MovieClip {
		private var _keys    : Array = new Array();
		private var _ball    : MovingObject;
		private var _bullets : Vector.<MovingObject> = new Vector.<MovingObject>();
		public function Main() {
		  _ball = new MovingObject(createBall());
			_ball.speed = 5;
			addChild(_ball);
			stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
		  stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
		  stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		  stage.addEventListener(MouseEvent.CLICK, clickHandler);
		}
 
		private function createBall(radius : Number = 10, color : uint = 0x0):Sprite{
			var ball : Sprite = new Sprite();
			ball.graphics.beginFill(color, 0.5);
			ball.graphics.drawCircle(0,0, radius);
		  return ball;
		}
 
		private function clickHandler(event : MouseEvent):void{
		  makeShot();	
		}
 
		private function makeShot():void{
		  var bullet : MovingObject = new MovingObject(createBall(5, 0xFF));
			var vector : Point = new Point();
			addChild(bullet);
			_bullets.push(bullet);
 
			// задаем начальные координаты пули
			bullet.x = _ball.x;
			bullet.y = _ball.y;
			// получаем вектор движения пули
		  vector.x = stage.mouseX - _ball.x;
			vector.y = stage.mouseY - _ball.y;
			// нормализуем вектор
			vector.normalize(1);
			// задаем направление пули найденным вектором
			bullet.direction  = vector;
 
			bullet.speed = 10;
		}
 
		private function keyDownHandler(event : KeyboardEvent):void{
		  _keys[event.keyCode] = true;	
		}
 
		private function keyUpHandler(event : KeyboardEvent):void{
			_keys[event.keyCode] = false;
		}
 
		private function enterFrameHandler(event : Event):void{
		  handleKeys();
			refreshPositions();
		}
 
		private function refreshPositions():void{
		  refreshPosition(_ball); 	
		  for(var i : int = 0; i < _bullets.length; i++){
				var bullet : MovingObject = _bullets[i];
				refreshPosition(bullet, true);
			}
		}
 
		private function refreshPosition(object : MovingObject, noReturn : Boolean = false):void{
		  object.x += object.direction.x * object.speed;
			object.y += object.direction.y * object.speed;
 
			if(noReturn){
				return;
			}
 
			if(object.x < 0){
				object.x = stage.stageWidth;
			} else if(object.x > stage.stageWidth){
				object.x = 0;
			}
		  if(object.y < 0){
				object.y = stage.stageHeight;
			} else if(object.y > stage.stageHeight){
				object.y = 0;
			}
		}
 
		private function handleKeys():void{
		 	_ball.direction = new Point(0,0);
 
			for(var key : String in _keys){
			  if(!_keys[key]){
				  continue;	
				}
				switch(parseInt(key)){
				  case Keyboard.DOWN:
					  _ball.direction.y += 1 ;
						break;
					case Keyboard.UP:
					  _ball.direction.y -= 1;
						break;
					case Keyboard.LEFT:
					  _ball.direction.x -= 1;
					  break;
					case Keyboard.RIGHT:
					  _ball.direction.x += 1;
						break;	
				}
			}
		}
 
	}
}
import flash.display.Sprite;
import flash.display.DisplayObject;
import flash.geom.Point;
 
internal class MovingObject extends Sprite{
  private var _direction : Point = new Point(0,0);
	private var _view      : DisplayObject;
	private var _speed     : Number;
 
	public function MovingObject(view : DisplayObject = null){
	  setView(view);
	}
 
	public function setView(view : DisplayObject):void{
	  if(_view){
			removeChild(_view);
		}
	  _view = view;
	  if(_view){
			addChild(_view);
		}
	}
 
	public function set speed(speed : Number):void{
		_speed = speed;
	}
 
	public function get speed():Number{
		return _speed;
	}
 
	public function set direction(direction : Point):void{
	  _direction = direction;	
	}
 
	public function get direction():Point{
		return _direction;
	}
}
Вложения
Тип файла: rar test.rar (460.9 Кб, 34 просмотров)
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

Старый 20.03.2011, 13:13
cr0w312 вне форума Посмотреть профиль Отправить личное сообщение для cr0w312 Найти все сообщения от cr0w312
  № 14  
Ответить с цитированием
cr0w312
 
Аватар для cr0w312

Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
Цитата:
Сообщение от kseniya Посмотреть сообщение
писать в кадрах зло)
конечно лучше в классе
я все время пишу в классах, поэтому и спрашиваю в чем разница и ответ "писать в кадрах - зло" просто умиляет

Добавлено через 17 минут
Цитата:
Сообщение от kseniya Посмотреть сообщение
Код AS3:
package {
	import flash.display.Sprite;
	public class Ball extends Sprite {
		public var mc_speedXFROM:Number = 0;
		public var mc_speedYFROM:Number = 0;
		public function Ball() {
		}
	}
 
}
такой способ хранения лучше чем хранить в массиве. меньше путаницы и проблем.
я понял о каком массиве идет речь, но спрашивал о другом - есть ли разница между размещением кода из твоего примера в отдельном классе и записью этого же кода в кадр.
пишу обобщенно, к словам не придираться имеется ввиду что код притерпевает некоторые изменения при перенесении в класс ("package{" и т.д.)

Старый 20.03.2011, 13:34
kseniya вне форума Посмотреть профиль Отправить личное сообщение для kseniya Найти все сообщения от kseniya
  № 15  
Ответить с цитированием
kseniya
 
Аватар для kseniya

Регистрация: Oct 2010
Адрес: Новосиб
Сообщений: 122
Цитата:
Сообщение от cr0w312 Посмотреть сообщение
я все время пишу в классах, поэтому и спрашиваю в чем разница и ответ "писать в кадрах - зло" просто умиляет
Плюсы:
- нет строгости к import'у экземпляров предопределённых классов
- нет строгости к объявлению типов переменных
что есть хорошо когда эксперементируешь
Минусы:
- Код в кадрах компилируется в динамический класс MainTimeline, что есть плохо, не правильно, затрата ресурсов процессора
- Код в кадрах только для Flash IDE, разработчики с FB или FD не смогут его править.
- Не будет чёткой архитектуры проекта, более 2к строчек кода на одном кадре и разбираться будет сложновато

Вы такой ответ ожидали?
А вобще из сообщения выше
Код AS3:
	Ball["mc_speedXFROM"] = Math.cos(mc_angle);
	Ball["mc_speedYFROM"] = Math.sin(mc_angle);
этого достаточно чтобы запихать переменные в Ball, ничего создавать или писать ещё не нужно.


Последний раз редактировалось kseniya; 20.03.2011 в 13:37.
Старый 20.03.2011, 13:42
cr0w312 вне форума Посмотреть профиль Отправить личное сообщение для cr0w312 Найти все сообщения от cr0w312
  № 16  
Ответить с цитированием
cr0w312
 
Аватар для cr0w312

Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
Цитата:
Сообщение от kseniya Посмотреть сообщение
Вы такой ответ ожидали?
да, все ясно, спасибо)
А вообще, автору неплохо было бы почитать какую-нибудь правильную литературу например "Колин Мук - Actionscript 3.0 для Flash"
и подобные темы как данный топик его уж точно не привели бы в ступор.


Последний раз редактировалось cr0w312; 20.03.2011 в 13:45.
Старый 20.03.2011, 13:53
Gonsalez вне форума Посмотреть профиль Отправить личное сообщение для Gonsalez Найти все сообщения от Gonsalez
  № 17  
Ответить с цитированием
Gonsalez
 
Аватар для Gonsalez

Регистрация: Mar 2011
Адрес: Ibiza
Сообщений: 13
+1,
спасибо.. проблема решилась
хранить speedXFROM и speedYFROM в шарике тоже была такая идея но не знал как правильно осуществить..
сейчас все получилось.. спасибо за помощь

Старый 20.03.2011, 18:47
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 18  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
А все же хранить отдельно скорость, а отдельно направление куда правильнее имхо.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

Старый 20.03.2011, 19:29
cr0w312 вне форума Посмотреть профиль Отправить личное сообщение для cr0w312 Найти все сообщения от cr0w312
  № 19  
Ответить с цитированием
cr0w312
 
Аватар для cr0w312

Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
Цитата:
Сообщение от ChuwY Посмотреть сообщение
А все же хранить отдельно скорость, а отдельно направление куда правильнее имхо.
все зависит от ситуации, но по большому счету согласен.

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

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

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


 


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


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