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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.09.2014, 14:38
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 11  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Цитата:
почему? шар наследует спрайт, чтобы использовать его свойства и методы, в моем случае graphics юзаю. Поконкретней что именно не так.
К сожалению, эта строчка говорит о том, что Вы вообще не в одном ООП языке не разбираетесь.
Объяснить Вам, значит пересказать несколько глав книги.
Покажите мне, где Вы в Shar обращаетесь к graphics унаследованного Sprite?

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

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
ntro123123, совет простой. Читайте форум.Многократно написано и про MVC и ООП на классах. Сэкономите много времени себе и другим. Обсирать г/k неполиткорректно.

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

Регистрация: May 2009
Сообщений: 47
Цитата:
Покажите мне, где Вы в Shar обращаетесь к graphics унаследованного Sprite?
в конструкторе, я просто думал (и сейчас думаю), что graphics является методом Sprite'a, и его юзать можно только унаследовав класс Sprite, или достаточно было сделать import спрайта?

Ладно, в любом случае спасибо и так читаю потихоньку.

Старый 14.09.2014, 16:00
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 14  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Вы неправильно думаете! В шаре Вы создаете объект с типом Sprite и присваиваете свойству _obj.
У этого объекта есть свойство graphics, _object.graphics, к которому Вы и обращаетесь. Но вот только
Ваше незнание какого-то языка вообще не дает уловить суть.
Я не говорю, что Вы не знаете другие языки, возможно в других языках Вы даже что-то делали и это работает...
Но вот саму работу языка Вы не понимаете. Что такое объект и его свойство, это самый-самый примитив.
Вы обязательно это поймете, это просто, но для это нужно читать. И лучше всего, отложить написание кода
на время, чтобы полностью посвятить себя чтению.

Добавлено через 49 минут
Вы упоминали, что мячей может быть больше одного, по этому вот код, как сделал бы я

Код AS3:
package
{
	public class Ball extends Sprite
	{
		public function Ball(radius = 10, color:uint = 0x000000)
		{
			super.graphics.beginFill(color);
			super.graphics.drawCcleir(0, 0, radius);
			super.graphics.endFill();
		}
	}
}
Код AS3:
package
{
	public class BallValue
	{
		public var x:Number;
		public var y:Number;
		public var m:Number;
		public var e:Number;
		public var r:Number;
		public var c:Number;
		public var v:Number;
		public var a:Number;
		public var d:Number;
 
		public var ball:DisplayObject;
 
		public function BallValue()
		{
			//...
		}
	}
}
Код AS3:
package
{
	public class Movement
	{
		private _allBallValue:Array = [];
 
		public function Movement()
		{
			// ...
		}
 
		public function setBallValue(ballValue:BallValue):void
		{
			_allBallValue.push( ballValue );
		}
 
		public function move(x:Number, y:Number)
		{
			var length:int = _allBallValue.length;
 
			for(var i:int = 0; i < length; i++)
			{
				item = _allBallValue[i];
				ball = item.ball;
 
				ball.x += item.e + x;
				ball.y += item.a + y;
			}
		}
	}
}
Код AS3:
var ballValue:BallValue = new BallValue();
	ballValue.x = array[0]
	ballValue.x = array[0]
	ballValue.y = array[0]
	ballValue.m = array[0]
	ballValue.e = array[0]
	ballValue.r = array[0]
	ballValue.c = array[0]
	ballValue.v = array[0]
	ballValue.a = array[0]
	ballValue.d = array[0]
 
ballValue.ball = new Ball(ballValue.r, ballValue.c);
 
var movement:Movement = new Movement();
movement.setBallValue( ballValue );
Добавлено через 9 минут
Вот на этом простом примере, можно понять, что я имел ввиду, когда говорил, что модель у Вас выполняет больше дозволенного в ООП.
У меня есть класс мяч, этот класс ТОЛЬКО мяч. Есть класс данные, он ТОЛЬКО данные. Есть класс,
который занимается ТОЛЬКО движением, да и то не движением, а по сути ТОЛЬКО соединяет данные из разных мест.
У него обязанность, ТОЛЬКО соединять данные. Он НЕ ЗАГРУЖАЕТ, НЕ СОЗДАЁТ, НЕ РАССЧИТЫВАЕТ.
Так же разбив все на отдельные классы, в любой момент можно с легкостью что-то поменять, заменить мяч на картинку и т.д.

Добавлено через 14 минут
И тут по сути ещё одного класса не хватает...

Добавлено через 35 минут
Код AS3:
public function createObj(e:Event = null):void
{
	var arr:Array=new Array();
	arr=loadData.data.split(';');
	currentShar=new Shar({ // создали экземпляр шара по параметрам из файла (класс objects/Shar.as)
			X:arr[0],
			Y:arr[1],
			M:arr[2],
			E:arr[3],
			R:arr[4],
			C:arr[5]
		});
	dispatchEvent(new Event('sharCreated'));
}
Метод выше, он вообще монстрообразный. Во первых, в хандлерах писать код, считается плохим тоном.
Во вторых, если Вам понадобится добавить новое свойство, то придется изменять код, а это тоже неправильно.
Сделайте в текстовом файле строку ключ:значение и потом распарсивайте эту строку в обжект типа
Код AS3:
object[prop] = value;


Последний раз редактировалось Gerbert; 14.09.2014 в 18:58.
Старый 15.09.2014, 10:30
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 15  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
Во
первых, в хандлерах писать код, считается
плохим тоном.
Что? Зачем вообще нужны они, если в них не писать код? Просто, чтобы были?
__________________
тут я

Старый 15.09.2014, 12:42
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 16  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Цитата:
Что? Зачем вообще нужны они, если в них не писать код? Просто, чтобы были?
Код содержащий логику...

Старый 15.09.2014, 12:48
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 17  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
Сообщение от Gerbert Посмотреть сообщение
Код содержащий логику...
Где Вы это прочли? Вы, возможно, перепутали с кодом в конструкторе. Тут да, конструктор интерпретатором не кэшируется и каждый раз заново интерпретируется.
__________________
тут я

Старый 15.09.2014, 12:59
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 18  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Я не помню где об этом читал и почему нельзя писать, но точно уверен, что читал об этом неоднократно
и если бы это были сомнительные статьи без объяснений, то я бы не запомнил... Хотя я и не помню..
Как в следующий раз увижу, то покажу Вам.

А объясните, что значит "интерпретирует заново"? Это если я создам сто экземпляров класса, то после компиляции
ссылки будут идти на методы класса ( как если бы они были статические ), а конструкторов создастся столько же
сколько и инстенсов?

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Интерпретатор снова берет байткод конструктора и снова его переводит в понятные ему команды. Каждый раз, в отличие от методов, которые "кэшируются" при первом обращении.
__________________
тут я

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

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

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

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

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


 


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


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