PDA

Просмотр полной версии : _alpha:Number


MrakobeS
30.10.2005, 02:53
Всем привет!
Пытаюсь учиться и возникают глупые вопросы. Уж простите :rolleyes:

Зачем так писать: _alpha:Number?
Или это новый синтаксис... но мне и так понятно что это число ;)
Последнее время постоянно сталкиваюсь с таким написанием "что-то:то-то" и медленно схожу с ума...
Мог бы кто растолковать суть такого написания?

Sneg
30.10.2005, 11:10
Это жесткое объявление типов переменных, необходимо для того чтобы если ты вдруг случайно на строчке так 800-900 от начала кода напишешь _alpha="50", то у тебя компилятор выдаст несоотвествие типов, а иначе ошибку будет найти очень проблематично. Да и в нормальных языках всегда переменные объявлятся явно , с указанием типа.

seifip
30.10.2005, 12:40
mne lichno boljshe nravitsja bez :to-to... :/ no posle togo kak ja prochital specifikaciju AS3/ECMA 4 - tam pochozhe budet obizatjelnym objavlenija tipa peremennoj... :(

iNils
30.10.2005, 12:44
Когда я писал что-то там на дельфи, то там переменные в самом начале указывали. Так более читабельнее, чем в середине когда, не сбивает.

Sneg
30.10.2005, 12:45
на самом деле это очень удобно и правильно, повышается читабельность кода - а то иной раз не понятно строковая это переменная или Number, теперь можно обходиться без префиксов - в АС 3.0 необходимо обязательно указывать тип, объявлять переменную до её использования, писать тип переменной, которая возвращает функция и т.п. Чем раньше переучивашься, тем лучше :-)

iNils
30.10.2005, 12:48
повышается читабельность кода

теперь можно обходиться без префиксов

Как раз префиксы повышают читабельность кода, а не объявления типа.

MrakobeS
30.10.2005, 15:05
Спасибо за ответы :)
Теперь мне ясно, что это обязательное новшество.

MrakobeS
30.10.2005, 15:24
Теперь обязательно писать так?:

_root.createEmptyMovieClip("mc",1);
_root.mc._x:Number = 100;
_root.mc._y:Number = 100;
_root.mc._alpha:Number = 50;
и т.д.

Или же всё не настолько параноидально? :confused:

seifip
07.11.2005, 22:25
u menja chegoto kogda ja pishu naprimer

speed:Number = 100

flash kidajet Syntax Error... Kak praviljno pisatj a?

iNils
07.11.2005, 22:32
Для as1 и as2 не обязательно. Кроме того, строгая типизация там работает только вовремя компиляции, для отлова ошибок. В самом swf была автоматическая конвертация типов так и осталась.

iNils
07.11.2005, 22:41
Добавление.
В других языках, строгая типизация обусловлена тем что, под каждый тип выделяется определенное количество памяти. Во флеше памать выделяется динамически, что дает (а также отсутствие в необходимости конвертации одного типа в другой) прирост в производительности.
А раз этого нет, то лично мне указывать типы таким образом не нравится. Запись типа: point:Array = new Array () режит глаз. Мне гораздо удобне писать arrayPoint = new Array (100), кроме того я всегда знаю что это массив, и нет нужды вспоминать что это там point. Но это лично мой подход. Так, что споров разводить по этому поводу не стоит.

seifip
07.11.2005, 22:42
a pochemu moja vara nerabotajet?? s prefixom var rabotajet... bez nego net... s _global tozhe neidjot :(

iNils
07.11.2005, 22:53
Исходник дай

seifip
07.11.2005, 23:26
a cho... prosto v pervyj kadr speed:Number = 0; pishi i zapuskaj... :D

speed:Number = 0; - nerabotajet
var speed:Number = 0; - rabotajet
_global.speed:Number = 0; - nerabotajet

iNils
07.11.2005, 23:47
Для типизированных переменных, прописывать var обязательно. Глобальные переменные (_global.speed) бестиповые, так как являются свойствами объекта _global.

seifip
07.11.2005, 23:57
toga ja nevizhu smysl v etich glupostjach tipa :Number :/

iNils
08.11.2005, 00:03
Перечитай мой пост за 21:41 :)

seifip
08.11.2005, 00:34
ja to vsegda takovo mnenija byl... no kakto chotel poprobovatj kak eto funkcionirujet... no kogda eto toljko dlja local peremennych to eto sovershenno nenuzhnaja vesch :( zhalko chto v AS3 nado budet ispoljzovatj :(

Sneg
09.11.2005, 22:31
Добавление.
Мне гораздо удобне писать arrayPoint = new Array (100), кроме того я всегда знаю что это массив, и нет нужды вспоминать что это там point. Но это лично мой подход.
Не уверен, но, кажется, жесткое объявление типов данных повышает производительность и позволяя компилятору генерировать более специализированный код - не тратить время на ненужное (в данном случае) приведение типов.

iNils
09.11.2005, 22:36
Не уверен, но, кажется, жесткое объявление типов данных повышает производительность и позволяя компилятору генерировать более специализированный код.
Перечитай весь топик внимательно еще раз.

seifip
09.11.2005, 23:11
nekakoje vremja eto neikanomit a toljko zabivajet kod nenuzhnym chlamom :D vot mojo mnenije... zhdu AS3 - nasejusj bez etich glupostej :)

Sneg
10.11.2005, 06:26
В "нормальных" языках экономит - как здесь не знаю, к примеру, помнится еще в школе писал на VB 6.0 там есть переменные типа Variant, тоже не определённые. Время на их обработку компилятором занимает ощутимо больше чем обычных - жестко объявленных.
P.s. VB - нормальным языком не считаю :-)

liquid lone
10.11.2005, 08:57
u menja chegoto kogda ja pishu naprimer

speed:Number = 100

flash kidajet Syntax Error... Kak praviljno pisatj a?

var speed:Number = 100

iNils
10.11.2005, 11:36
В "нормальных" языках экономит - как здесь не знаю, к примеру, помнится еще в школе писал на VB 6.0 там есть переменные типа Variant, тоже не определённые. Время на их обработку компилятором занимает ощутимо больше чем обычных - жестко объявленных.
P.s. VB - нормальным языком не считаю :-)
Мы владаем тем что у нас есть (вернее, что нам дают). И на текущий момент строгая типизация выигрыша, кроме как удобства отладки при компиляции, не дает.

cRh
10.11.2005, 21:40
var speed:Number = 100