![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Цитата:
Объяснить Вам, значит пересказать несколько глав книги. Покажите мне, где Вы в Shar обращаетесь к graphics унаследованного Sprite? |
|
|||||
|
[+1 25.10.13]
[+4 18.03.14] |
ntro123123, совет простой. Читайте форум.Многократно написано и про MVC и ООП на классах. Сэкономите много времени себе и другим. Обсирать г/k неполиткорректно.
|
|
|||||
|
Регистрация: May 2009
Сообщений: 47
|
Цитата:
Ладно, в любом случае спасибо и так читаю потихоньку. |
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Вы неправильно думаете! В шаре Вы создаете объект с типом Sprite и присваиваете свойству _obj.
У этого объекта есть свойство graphics, _object.graphics, к которому Вы и обращаетесь. Но вот только Ваше незнание какого-то языка вообще не дает уловить суть. Я не говорю, что Вы не знаете другие языки, возможно в других языках Вы даже что-то делали и это работает... Но вот саму работу языка Вы не понимаете. Что такое объект и его свойство, это самый-самый примитив. Вы обязательно это поймете, это просто, но для это нужно читать. И лучше всего, отложить написание кода на время, чтобы полностью посвятить себя чтению. Добавлено через 49 минут Вы упоминали, что мячей может быть больше одного, по этому вот код, как сделал бы я 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(); } } } 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() { //... } } } 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; } } } } 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 ); Вот на этом простом примере, можно понять, что я имел ввиду, когда говорил, что модель у Вас выполняет больше дозволенного в ООП. У меня есть класс мяч, этот класс ТОЛЬКО мяч. Есть класс данные, он ТОЛЬКО данные. Есть класс, который занимается ТОЛЬКО движением, да и то не движением, а по сути ТОЛЬКО соединяет данные из разных мест. У него обязанность, ТОЛЬКО соединять данные. Он НЕ ЗАГРУЖАЕТ, НЕ СОЗДАЁТ, НЕ РАССЧИТЫВАЕТ. Так же разбив все на отдельные классы, в любой момент можно с легкостью что-то поменять, заменить мяч на картинку и т.д. Добавлено через 14 минут И тут по сути ещё одного класса не хватает... Добавлено через 35 минут 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')); } Во вторых, если Вам понадобится добавить новое свойство, то придется изменять код, а это тоже неправильно. Сделайте в текстовом файле строку ключ:значение и потом распарсивайте эту строку в обжект типа Последний раз редактировалось Gerbert; 14.09.2014 в 18:58. |
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Цитата:
|
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Я не помню где об этом читал и почему нельзя писать, но точно уверен, что читал об этом неоднократно
и если бы это были сомнительные статьи без объяснений, то я бы не запомнил... Хотя я и не помню.. Как в следующий раз увижу, то покажу Вам. А объясните, что значит "интерпретирует заново"? Это если я создам сто экземпляров класса, то после компиляции ссылки будут идти на методы класса ( как если бы они были статические ), а конструкторов создастся столько же сколько и инстенсов? |
|
|||||
|
[+1 25.10.13]
[+4 18.03.14] |
Я бы добавил, что передавать параметры через конструктор тоже не очень правильно, хотя и красиво
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|