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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.04.2010, 14:10
mickfallout вне форума Посмотреть профиль Отправить личное сообщение для mickfallout Найти все сообщения от mickfallout
  № 21  
Ответить с цитированием
mickfallout
 
Аватар для mickfallout

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
а у Вас целый букет быдлокода:
1. static до нэймспэйса.
2. название переменной MovieClipsClassesObject с большой буквы.
3. не понятно почему оно является переменной, а не константой.
4. если приватная, то почему без подчёркивания?
5. объект создаёте через литерал { }, а не через new Object(). советую второй вариант.
6. метод называется newMovieClip а параметром передаётся imageName.
7. с названиями в принципе беда: MovieClipsClassesObject, movieClipsClass. непонятно.
8. в качестве результат возвращается экземпляр MovieClip, что само по себе плохо. а что, если вам нужно будет сделать наследника спрайта? или битмапа? или ещё чего угодно? напишите ещё один такой же метод?
9. возвращаете Вы готовый экземпляр, но опираясь на пункт 7, возникает вопрос: а что если надо будет передать параметр в конструктор класса?
10. непонятно откуда берётся resourceLoader, и почему он один. а если подгружаемых библиотек будет много?

на счёт пункта 1 и 4, многие со мной не согласятся. я не очень настаиваю.
5. так было рекомендовано в соглашении Flex SDK coding conventions and best practices читал перевод тут http://racer242.blogspot.com/2008/05/flex_23.html
Цитата:
Object
Используйте вместо new Object() литералы объекта:
можно: {}
нельзя: new Object()
8. Ну во первых тема топика - мувиклипы. Во вторых у меня только три типа - мувиклип, битмап, sound. Мне удобнее использовать отдельные три метода, т.к. в них есть свои особенности, и для строгой типизации. Удобно когда можно писать addChild(newMovieClip("unit")) вместо addChild(MovieClip(newSomething("unit"))).
9.В конструктор класса MovieClip ничего передавать не надо. Там где надо(в битмап например) -там передается, там другая функция...
10. Много библиотек не планируется, откуда берется объясняется выше по коду. Приводить не стал, т.к. это выходит за рамки темы топика (обсуждаем как извлечь из библиотеки, а не как загрузить библиотеку)
1,2,3,4,6,7 - Спасибо, исправлю =)

Добавлено через 9 минут
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
написать, что типа этого, было бы логичнее:
Код AS3:
public static function getClass(name:String):Class
так конечно универсальнее, но у меня например:
Код AS3:
addChild(getBitmap("chest"));
addChild(newMovieClip("unit"));
а у Вас будет что-то типа
Код AS3:
addChild(new Bitmap( BitmapData(new getClass("chest"))));
addChild(MovieClip(new getClass("unit")));
__________________
Могу ошибаться... =)


Последний раз редактировалось mickfallout; 27.04.2010 в 14:19.
Старый 27.04.2010, 14:44
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 22  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
5. если Вы будите опираться на эту конвенцию то вскоре встретитесь с проблемами. например у литерала {} не так как у всех работает перебор через for .. in
8. тема топика мувиклипы, только потому, что автор, видимо, перешёл к нас с АС2, в котором ничего другого и нету. к тому же даже гуру по привычки называю всю визуалку "мувиками". тупо привычка из старых времён.
9. ваше право. пишете 10 раз один и тот же рас так нравится =)
10. я уже понял, что Вы любите писать одноразовый код.

по поводу того как будет у меня. у меня будет понятно, что происходит, а не создание непонятно чего и не понятно где. к тому же я забыл сказать почему Ваш вариант ещё хуже =)

если у Вас в библиотеке не окажется указанного класса, то у вас произойдёт целый каскад ошибок:
1. new movieClipsClass() - Вы не проверяете существование класса. то есть будет ошибка.
2. даже если Вы поставите проверку в пункте 1 и вернёте null, то у Вас всё упадёт на addChild.

и ещё новый быдлокод:
не используйте для приведение типов конструкции вида MovieClip( object ). это конвертация а не приведение типов. используйте оператор as.

в общем как хотите.

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

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
Цитата:
Вы не проверяете существование класса. то есть будет ошибка.
Вы тоже не проверяете вроде? =)
Код AS3:
c = resourcesLoader.content.loaderInfo.applicationDomain.getDefinition( name ) as Class;
На данный момент меня устраивает что программа упадёт если нет нужного класса. В дальнейшем естественно воспользуюсь Вашим советом =)
Цитата:
не используйте для приведение типов конструкции вида MovieClip( object ). это конвертация а не приведение типов. используйте оператор as.
В той конвенции написано ровно наоборот.
Цитата:
Оператор "as" используйте только в том случае, если при ошибке приведения к типу, вы хотите получить в результате значение "null", а не генерацию исключения:
можно: IUIComponent(child).document
нельзя: (child as IUIComponent).document
Добавлено через 52 секунды
Цитата:
если Вы будите опираться на эту конвенцию то вскоре встретитесь с проблемами.
Посоветуйте, как какую конвенцию мне опираться? На какую например опираетесь Вы?
__________________
Могу ошибаться... =)

Старый 27.04.2010, 16:02
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 24  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
mickfallout, а зачем мне его там проверять? там у меня ошибки не будет. я не создаю экземпляра и уж тем более никуда его не добавляю. просто возвращаю результат.

конвертация и привидение - разные операции. у них разный смысл и разное назначение.

желаю удачи. продолжайте пользоваться конвенцией приводящей к ошибкам =) я пользуюсь здравым смыслом, и знанием специфики всего того, что использую.

Старый 27.04.2010, 17:29
Aloran вне форума Посмотреть профиль Отправить личное сообщение для Aloran Найти все сообщения от Aloran
  № 25  
Ответить с цитированием
Aloran

Регистрация: May 2009
Сообщений: 223
Записей в блоге: 1
BlooDHounD
Подскажи пожалуйста, а чем конвертация отличается от приведения?
А еще есть моменты когда надо отходить от конвенции?

Старый 27.04.2010, 18:01
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 26  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Aloran Посмотреть сообщение
BlooDHounD
Подскажи пожалуйста, а чем конвертация отличается от приведения?
Приведение не делает преобразования из A в B.

Цитата:
Сообщение от Aloran Посмотреть сообщение
А еще есть моменты когда надо отходить от конвенции?
Есть.

Старый 27.04.2010, 18:03
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 27  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Код AS3:
trace( '5' as Number ); // null
trace( Number( '5' ) ); // 5
 
trace( '<xml>' as XML ); // null
trace( XML( '<xml />' ) ); // <xml />
 
trace( new Sprite() as MovieClip ); // null
trace( MovieClip( new Sprite() ) ); // TypeError #1034
приведение типа всегда возвращает ссылку на тот же объект, что у вас и был, либо null.
конвертация при возвращает ту же ссылку, только если типы совпадают, иначе она пытается создать объект нового типа на базе нового. если и этого не выходит она выбрасывает ошибку.

лично я и не помню, где я в последний раз использовал конвертацию.
для преобразования текста в число я использую parseInt и parseFloat.
для приведения к строке использую метод toString.
для создания XML я всегда пишу new XML().
ну и т.д. то есть убираю посредников.

Старый 28.04.2010, 00:28
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 28  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Конвертация вроде как шустрее работает.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 28.04.2010, 00:49
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 29  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Цитата:
Сообщение от dimarik Посмотреть сообщение
Конвертация вроде как шустрее работает.
Код AS3:
public function test() {
	const l:uint = 1e6;
	var i:uint;
	var t:Number;
 
	t = getTimer();
	for ( i=0; i<l; i++ ) {
		this as Sprite;
	}
	trace( getTimer() - t ); // 192
 
	t = getTimer();
	for ( i=0; i<l; i++ ) {
		Sprite( this );
	}
	trace( getTimer() - t ); // 236
}
а если местами поменять, то приведение почти в 2 раза рвёт. лично я уверен, что внутри конвертации сперва происходит приведение, поэтому оно быстрее быть не может. это как конвертацией в String, внутри, которой вызывается toString. так что сомнительно.

p.s.: сегодня прямо день перлов про быстродействие =) записать что ли все ...

Старый 28.04.2010, 00:51
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 30  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
По идее приведение должно быть быстрее - при нем не создается новый объект. Возвращается-то либо сам объект, который конвертируем, либо null (который вообще синглтон).
Код AS3:
var a:MovieClip = new MovieClip();
var b:DisplayObject = a as DisplayObject;
trace(a === b); // true
UPD
А это-то как?
Код AS3:
var a:MovieClip = new MovieClip();
var b:DisplayObject = DisplayObject(a);
trace(a === b); // true
__________________
...вселенская грусть


Последний раз редактировалось gloomyBrain; 28.04.2010 в 01:29.
Создать новую тему Ответ Часовой пояс GMT +4, время: 03:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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