Показать сообщение отдельно
Старый 01.07.2010, 16:21
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 7  
Ответить с цитированием
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
Есть замечания по коду:

1. Прежде всего, перейдите на вербльюжью нотацию - она используется в AS3 и многие редакторы ориентированы именно на нее. Не используйте подчеркивания вначале имени переменной - это делается лишь изредка и, как правило, применяется при создании get/set методов.
Код AS1/AS2:
protected  var layer1:Sprite;
2. Объявление публичной переменной - дело тонкое. Далеко не всегда это рекомендуется делать, а в вашем случае лучшим выбором возможно будет организация статического get метода (set явно не пригодится).
Второй вариант, рекомендуемый в общем случае - передать ссылки на экземпляры layer в нужные классы.

3. Про объявление локальных переменных уже сказали.

4. Часто инициализацию объектов можно смело вынести в объявление:
Код AS1/AS2:
private var layer:FullTree = new FullTree;
(не используйте венгерскую нотацию!!!)
К тому-же, если вы используете типизацию Sprite, то не сможете корректно достучаться до методов и свойств, FullTree.
Я использовал private, потому, что крайне маловероятно, что у рутового класса WebSite (если я правильно понял) будут потомки.

5. Ошибка логики вызова init. Мне сложно объяснить, но я поступил бы иначе.
В итоге, код вывглядел бы примерно так:

Код AS1/AS2:
package com.site {
	import flash.display.Sprite;	
	import com.site.layers.*;	
 
	public class WebSite extends Sprite {
 
		private static var _instance : WebSite;
		public function getInstance() : WebSite {
			return _instance;
		}
 
		private var darkCloudLayer : DarkCloud = new DarkCloud();
		private var bushLayer : Bush = new Bush();
		private var fullTreeLayer : FullTree = new FullTree();
 
		public function WebSite() {
			super();
			initInstance();
		}
 
		private function initInstance() : void {
			if (_instance) {
				throw new Error("Class WebSite is singleton");
				return;
			}
			_instance = this;
			initiView();
 
			// code here
		}
 
		private function initiView() : void {
			addChild(darkCloudLayer);
			// code here
			addChild(bushLayer);
			// code here
			addChild(fullTreeLayer);
			// code here
		}
	}
}
разумеется, всё это построено на некоторых предположениях относительно структуры проекта, в частности, что класс WebSite является рутовым.

Добавлено через 2 минуты
Цитата:
Сообщение от Dr_Bra Посмотреть сообщение
выдает ошибки
- еще бы он их не выдавал при отсутствии нескольких классов.

Добавлено через 4 минуты
Цитата:
Сообщение от Genzo Посмотреть сообщение
Нельзя сделать _layer3_mc статическим так как он требует создания в констукторе или т.п.
- это можно сделать без проблем, только придется делать класс синглетоном. Что в данном случае вполне возможно.
__________________
http://realaxy.com


Последний раз редактировалось Iv; 01.07.2010 в 16:27.