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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.10.2008, 01:24
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 1  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
По умолчанию Невозможность инициализации параметра метода свойством класса

На подобный код компилятор ругается:
Код:
package 
{
	
	public class ToolTip extends Sprite
	{
		// <...>
		public var animationSpeed:Number=0.2
                
               //<...>
               public function fadeIn(speed:Number=this.animationSpeed):void
		{
               //<...>
                }
	}
}
Выдает ошибку:
Код:
Parameter initializer unknown or is not a compile-time constant.
Я что-то делаю не так или действительно нельзя подобным образом (свойством класса/любой динамической переменной) инициализировать параметр по умолчанию?
__________________
Дело не в тебе

Старый 23.10.2008, 02:48
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 2  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Цитата:
Сообщение от AL.exe Посмотреть сообщение
Я что-то делаю не так или действительно нельзя подобным образом (свойством класса/любой динамической переменной) инициализировать параметр по умолчанию?
Параметр по умолчанию должен быть известен и неизменен во время компиляции.

Старый 23.10.2008, 03:17
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 3  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Ну, если я объявляю свойство константным, ошибка тоже возникает:

Код:
public const animationSpeed:Number=0.2
Жаль, ну да ладно. Это не страшно
__________________
Дело не в тебе

Старый 23.10.2008, 03:20
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 4  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Смысл в том, что определение функции не должно зависеть от среды времени выполнения.

Старый 23.10.2008, 05:40
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Дефолтные значения аргументов должны быть значением (не указателем) (в смысле, они никому не должны, но, по факту так и есть). Но (!) если нужно это как-то обойти (хотя, с трудом представляю зачем), то можно использовать -define ключ компайлера для объявления компайл-тайм констант (т.е. сами константы заменить все равно не получится, но зато можно будеть в одном классе получить несколько функций с одинаковым названием, которые в зависимости от того, чего мы там зададим в аргументах компайлера и будут выполняться). т.е. условный пример:
Код:
DEFINE::compileTypeA
{
    public function doSomething(someInt:int = 1):void {}
}
DEFINE::compileTypeB
{
   public function doSomething(someInt:int = 2):void {}
}
Ну и далее определив compileTypeA как true, а compileTypeB как false получим метод с дефолтным значением аргумента == 1.
__________________
Hell is the possibility of sanity

Старый 23.10.2008, 22:08
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 6  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Ого, здорово

Цитата:
хотя, с трудом представляю зачем
Да, я тоже, просто удивился, что так не будет работать
__________________
Дело не в тебе

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

Регистрация: Sep 2002
Сообщений: 30,787
Можно присваивать значение статической константы.

Старый 23.10.2008, 23:10
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 8  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
О, спасибо за подсказку - сам бы не догадался попробовать
__________________
Дело не в тебе

Старый 24.10.2008, 00:07
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
__etc:
ток это не всегда работает... есть об этом пару баг репортов, пока открытых.
http://bugs.adobe.com/jira/browse/ASC-3143
например
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 24.10.2008 в 00:21.
Старый 24.10.2008, 01:50
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 10  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Да, Adobe вообще как-то очень медленно реагирует на репорты... или их уж слишком много, что невозможно на все отреагировать. Даже статусы не проставляют
__________________
Дело не в тебе

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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