Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   new Date() - вызов в мувиклипе (http://www.flasher.ru/forum/showthread.php?t=206870)

Romeo4755 11.03.2014 01:06

new Date() - вызов в мувиклипе
 
Я не могу разобраться - как вызвать myTime = new Date(); внутри мувиклипа? Получаю 1120: Access of undefined property cTime.
Спасибо за внимание.

alexandrratush 11.03.2014 01:15

Покажите весь код. Проблема в переменной cTime

Romeo4755 11.03.2014 18:50

Кода, собственно, и нету.
Просто определение времени в начале клипа, чтобы выставить правильное время (Клип является часами со стрелками).
Клип был отдельной флешкой, причем собственноручно написанной. Код в первом кадре начинался так:
cTime = new Date();
hour = cTime.getHours();
minute = cTime.getMinutes();

Сделала часики мувиклипом. cTime не пашет.

RigidFlasher 12.03.2014 06:36

Цитата:

Сообщение от Romeo4755 (Сообщение 1161434)
Получаю 1120: Access of undefined property cTime.

Пожалуй, нужно сначала объявить переменную cTime.
Например
Код AS3:

var cTime = new Date();
hour = cTime.getHours();
minute = cTime.getMinutes();

Так всё работает, только что проверил.

Romeo4755 15.03.2014 18:04

Большое спасибо. Наверно, разница между AS2 и AS3.
Синтаксиса ни там, ни там не помню.
Новые строчки пишу нормально, по аналогии.
Старый исходник собирался еще в Макромедии 4 и в новом Aдобе работает без проблем, я и повелась, овца.

Скажите, пожалуйста, меня мучает такой вопрос: при обращении к клипу в AS3 каждый раз объявляются новые переменные. Что с ними происходит, когда клип запускается заново? В нормальном языке программирования вроде Дельфи для переменной не создается экземпляр - в худшем случае каждый раз при обращении к ней будет просто изменено значение. В лучшем - при заканчивании процедуры память, занятая под местные переменные просто освободится.

В случае использования в Экшен скрипте Мувиклипа со своими переменными существующий на экране экземпляр Мувиклипа не уничтожается, к нему просто обращаются периодически. И тут меня как-то настораживает вот это
Код AS1/AS2:

var cTime = new Date();

каждый раз при обращении (или любая другая переменная). Создаются новые экземпляры переменной с тем же именем, занимающие все больше памяти? Не стоит вообще объявлять переменные внутри клипов и надо иметь только глобальные?

caseyryan 15.03.2014 18:16

Цитата:

Наверно, разница между AS2 и AS3.
А что, в ас2 переменные без ключевого слова var объявлялись?
Цитата:

Что с ними происходит, когда клип запускается заново?
Цитата:

В нормальном языке программирования вроде Дельфи для переменной не создается экземпляр - в худшем случае каждый раз при обращении к ней будет просто изменено значение.
Никогда не считал делфи нормальным языком, но да ладно))
В ас3 новый экземпляр создается только при вызове директивы new, без вариантов.
Если такой директивы нет, то и новый экземпляр не создастся, так что мне не понятно, откуда такие выводы.
Если у вас при обращении к какому-то клипу создаются новые экземпляры, которые потом болтаются в памяти, то это не проблема языка, а проблема архитектуры приложения. АС3 - абсолютно нормальный язык, со своими плюсами и минусами

Цитата:

в худшем случае каждый раз при обращении к ней будет просто изменено значение.
Не должно при обращении к переменной меняться значение. Если это происходит, значит что-то не нормально. Значение должно меняться только при присвоении оного.

Romeo4755 15.03.2014 22:44

Цитата:

А что, в ас2 переменные без ключевого слова var объявлялись?
Я просто не помню. Без слова var модуль на as2 работает и не вызывает нареканий Адоб флеша.
Добавлено: что-то помнится в ЭС2 вообще можно было не объявлять переменные, просто присваиваешь значение новому идентификатору на ходу.

Цитата:

Никогда не считал делфи нормальным языком, но да ладно))
Типа я знала, что шутки будут.
Еще раз по сути, стараясь не пикироваться.
Дельфи. Процедура. Входим в нее, объявляется переменная. Делаем с ней все, что хотим: присваиваем значения, пользуемся, она занимает в памяти только свои, скажем 8 байт. (Обращаемся к переменной - не в смысле именно считывания, а в смысле пользования ей, может быть, и присваиваем значение. x:= 5 - тоже обращение к переменной). Выходим из процедуры - она вообще ничего больше не занимает.

Экшен скрипт. Мувиклип. Каждый раз при запуске кода в мувиклипе создаем, я так понимаю (или я не так понимаю?) экземпляр переменной. Например: var cTime = new Date(); И, получается, памяти тратится все больше?

КорДум 16.03.2014 01:19

Цитата:

Каждый раз при запуске кода в мувиклипе создаем, я так понимаю (или я не так понимаю?) экземпляр переменной.
Если писать в кадрах, а не в классах, как это принято в полноценном ООП языке AS3, да.
Цитата:

И, получается, памяти тратится все больше?
Пока не приходит Garbage Collector и ненужные переменные не сгребает лопатой. Сам.

Bletraut 16.03.2014 02:28

Цитата:

Дельфи. Процедура. Входим в нее, объявляется переменная. Делаем с ней все, что хотим: присваиваем значения, пользуемся, она занимает в памяти только свои, скажем 8 байт. (Обращаемся к переменной - не в смысле именно считывания, а в смысле пользования ей, может быть, и присваиваем значение. x:= 5 - тоже обращение к переменной). Выходим из процедуры - она вообще ничего больше не занимает.
Сам работал несколько лет в делфи, и AS3 для меня теперь после него просто мана небесная. А что касается процедур, то в AS3 (как и в большинстве языков) есть аналог и называется он функция.

Код AS3:

private function sampleFunction(cTime:Date, des:String = null):void
{
    trace(cTime.getHours()); //часы
}


Romeo4755 16.03.2014 19:10

Цитата:

Сам работал несколько лет в делфи, и AS3 для меня теперь после него просто мана небесная.
Собственно, у меня мнение такое же (точнее - не столько с Дельфи на AS3, сколько с AS2 на AS3 в силу сходства последнего с Дельфи). В некоторых областях.
А вот для обработки структуры диска и работы со строками даже во флеш-приложениях приходится запускать модули, скомпилированные с Дельфи. Но я всего Экшен скрипта не знаю, использую для оформительских целей, просто на Дельфи аппарат формальной обработки текста заведомо силен и есть запас нужных библиотек.

Цитата:

есть аналог и называется он функция
Спасибо. По этому пути уже и пошли. Но не было полной уверенности насчет распределения памяти. Недоступность переменной не означает прекращение ее существования - просто вслух нигде не сказано, что с памятью происходит. А Экшен скрипт как-то насчет памяти не очень заботлив.

Меня настораживали примеры из учебника типа
Код AS3:

var cloudfadeout:Tween = new Tween(cloud1, "alpha", None.easeOut, cloud1.alpha, 0,3,true);

Это облачко в случайном порядке ездит по карте Европы (чисто для разнообразия картинки) и появляется-исчезает в разных местах. Если твины для облака не оформлены в функциях, облачко когда-нибудь доездится, завесит систему.
Цитата:

Пока не приходит Garbage Collector и ненужные переменные не сгребает лопатой. Сам.
Пойду почитаю.


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

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