![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2012
Сообщений: 108
|
Посоветуйте, какие методы для следующих задач оптимальны?
1)Задача: в классе-потомке нарисовать спрайт так, чтобы он перекрывал остальные (был поверх всех). Методы решения: а) диспатчить эвент, передавать спрайт наверх, отрисовывать в мейне (main) б) делать супером (вряд ли нормально сработает при n-й вложенности потомка) в) каким-то образом забирать/передавать stage/root 2)Как работают следующие методы и какой наиболее оптимален в случае: привести переменную к строке? var i:int a)"" + i b)i.toString() c)String(i) d)i as String |
|
|||||
|
1. Когда-то тестировал, самый производительный метод - банально выполнить addChild(), в данном сулчае - в stage.
2. С чисто эстетической точки зрения - метод b. Последний метод стоит использовать если нужно проверить, удается ли интерпритировать тиа как строку(получим null, если это не так, но в случае с int, который, впрочем, внутри плеера все равно приводится к Number, конвертация всегда будет успешной). |
|
|||||
|
[+4 06.05.14]
|
Цитата:
А как удобно читать в массивах [ .1 , .2, .3 , .4 , .5 ] смак!
__________________
Марк Tween |
|
|||||
|
Регистрация: Aug 2012
Сообщений: 108
|
Цитата:
![]() А вообще, как бы по ООП вроде считается кошерным использовать .toString, хотя там бывает надо ставить лишние скобки иначе он выдает function. String - простой тип данных вообще, а вот например, про Object я читал, что лучше использовать o as Object, т.к. Object(o) может выдать ошибку По 1му поводу - передал root статиком и к нему подцепил (вариант в) PS кстати, этим тут кто-нибудь пользуется? Последний раз редактировалось Psijic; 23.10.2012 в 17:57. |
|
||||||
|
Цитата:
i.toString(), насколько помню, работает значительно медленнее String(i); Цитата:
![]() Цитата:
Цитата:
( конечно, надо понимать, что запись object.getValue() > 0 ? object.getValue() : -object.getValue() будет медленнее чем Math.abs(object.getValue()) - лишний вызов функции или обращение к геттеру съест всю экономию) Цитата:
Последний раз редактировалось expl; 23.10.2012 в 18:21. |
|
|||||
|
Цитата:
А вот касательно B и D все будет иначе. as String - это приведение к типу "строка", тогда как String(i) - это конвертация типов. Приведение не всегда сработает. Можно на практике убедиться, что as String не всегда сработает не выкинув ошибку. toString() вообще может возвращать что угодно в виде строки. Можно переопределить этот метод в своем классе и написать туда хоть [object Vasya Pupkin] Так что здесь все относительно. Лично я пользуюсь конкатенацией со строкой. Реже явной конвертацией String(нужное значение); |
|
|||||
|
Регистрация: Aug 2012
Сообщений: 108
|
а еще я так понял, super - это глючный метод когда много классов, и вообще костыль.
Кстати, такая конструкция оптимальна? Нельзя ли упростить? public class Main extends Sprite { public static var mainRoot:DisplayObject; public function Main():void { mainRoot = root; } } И надо ли писать void после public function Main()? По умолчанию он его не выдает |
|
|||||
|
.
|
Отсюда помедленнее, пожалуйста, я записываю.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 22:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|