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

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

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

Регистрация: Dec 2003
Адрес: Москва
Сообщений: 38
Отправить сообщение для ethereal999 с помощью ICQ
Question Создание безымянного объекта (не работает)

Есть такой код из Пеннера:
Код:
Color.prototype.setBrightness = function (bright){
	var trans = this.getTransform();
	with (trans){
		ra = ga = ba = 100 - Math.abs (bright);
		rb = gb = bb = (bright > 0) ? bright * (256/100) : 0;
	}
	this.setTransform (trans);
}

MovieClip.prototype.setBrightness = function (bright){
	(new Color(this)).setBrightness (bright);
}

mc.setBrightness (50);
так Флэш говорит, что нет такого метода для Color (хотя я только что его создал). А вот такой код работает:
Код:
MovieClip.prototype.setBrightness = function (bright){
	var c = new Color (this);
	c.setBrightness (bright);
}

mc.setBrightness (50);
Вопрос: так почему не работает конструкция (new Color(this)) для вновь созданного метода ?
__________________
Love & Peace!


Последний раз редактировалось ethereal999; 16.03.2006 в 02:33.
Старый 16.03.2006, 02:49
Король вне форума Посмотреть профиль Отправить личное сообщение для Король Найти все сообщения от Король
  № 2  
Ответить с цитированием
Король
 
Аватар для Король

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 2,736
Отправить сообщение для Король с помощью ICQ
Эксперимент показал, что такой синтаксис (*new Smth().func()*) работает только с экземплярами Object
почему - самому интересно

Старый 16.03.2006, 09:22
ethereal999 вне форума Посмотреть профиль Отправить личное сообщение для ethereal999 Посетить домашнюю страницу ethereal999 Найти все сообщения от ethereal999
  № 3  
Ответить с цитированием
ethereal999
 
Аватар для ethereal999

Регистрация: Dec 2003
Адрес: Москва
Сообщений: 38
Отправить сообщение для ethereal999 с помощью ICQ
ну раз уж заговорил про Color, то я немного переработал метод Пеннера с учетом того, что в 8-ке Color не приветствуется:
Код:
import flash.geom.Transform;
import flash.geom.ColorTransform;

MovieClip.prototype.setBrightness = function (bright){
	var mult = 1 - Math.abs (bright) / 100;
	var offset = (bright > 0) ? bright * 2.56 : 0;
	(new Transform (this)).colorTransform = new ColorTransform (mult, mult, mult, this._alpha / 100, offset, offset, offset, 0);
}

mc.setBrightness (50);
__________________
Love & Peace!

Старый 16.03.2006, 09:27
Король вне форума Посмотреть профиль Отправить личное сообщение для Король Найти все сообщения от Король
  № 4  
Ответить с цитированием
Король
 
Аватар для Король

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 2,736
Отправить сообщение для Король с помощью ICQ
это конечно клево, но это не объясняет.
подождем матерых теоретиков.

Старый 16.03.2006, 19:06
andr64 вне форума Посмотреть профиль Отправить личное сообщение для andr64 Посетить домашнюю страницу andr64 Найти все сообщения от andr64
  № 5  
Ответить с цитированием
andr64
 
Аватар для andr64

Регистрация: Sep 2005
Сообщений: 65
Отправить сообщение для andr64 с помощью ICQ
а так?
Код:
Color.prototype.setBrightness = function(bright) {
	var trans = this.getTransform();
	with (trans) {
		ra = ga=ba=100-Math.abs(bright);
		rb = gb=bb=(bright>0) ? bright*(256/100) : 0;
	}
	this.setTransform(trans);
};
MovieClip.prototype.setBrightness = function(bright) {
	Object(new Color(this)).setBrightness(bright);
};
mc.setBrightness(50);

Старый 16.03.2006, 20:04
Король вне форума Посмотреть профиль Отправить личное сообщение для Король Найти все сообщения от Король
  № 6  
Ответить с цитированием
Король
 
Аватар для Король

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 2,736
Отправить сообщение для Король с помощью ICQ
andr64, я тебе могу написать 300 способов реализовать этот алгоритм, но ни один из них не является объяснением того, почему не работает самый первый.

Старый 16.03.2006, 20:38
__i вне форума Посмотреть профиль Отправить личное сообщение для __i Найти все сообщения от __i
  № 7  
Ответить с цитированием
__i
 
Аватар для __i

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
гы, интересно девки пляшуть %(

если вызывать методы Color которые определены по умолчанию то все работает.

Старый 16.03.2006, 20:53
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 8  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Цитата:
Сообщение от ethereal999
Есть такой код из Пеннера:
Код:
Color.prototype.setBrightness = function (bright){
	var trans = this.getTransform();
	with (trans){
		ra = ga = ba = 100 - Math.abs (bright);
		rb = gb = bb = (bright > 0) ? bright * (256/100) : 0;
	}
	this.setTransform (trans);
}

MovieClip.prototype.setBrightness = function (bright){
	(new Color(this)).setBrightness (bright);
}

mc.setBrightness (50);
так Флэш говорит, что нет такого метода для Color (хотя я только что его создал). А вот такой код работает:
Код:
MovieClip.prototype.setBrightness = function (bright){
	var c = new Color (this);
	c.setBrightness (bright);
}

mc.setBrightness (50);
Вопрос: так почему не работает конструкция (new Color(this)) для вновь созданного метода ?
типичные придирки AS2 компилятора: класс не динамический - ничего не добавишь..,
компилируем как AS1 и все ОК.
зы: второй вариант проходит, потому что var c не типизирована (проверки нет), поставь var c : Color и получишь тот же еррор..
зыы:проходит и такой вариант (компилятор 'не знает' чего вызываем):
Код:
MovieClip.prototype.setBrightness = function (bright){
	(new Color(this))["setBrightness"] (bright);
}


Последний раз редактировалось silin; 16.03.2006 в 20:56.
Старый 16.03.2006, 20:54
ethereal999 вне форума Посмотреть профиль Отправить личное сообщение для ethereal999 Посетить домашнюю страницу ethereal999 Найти все сообщения от ethereal999
  № 9  
Ответить с цитированием
ethereal999
 
Аватар для ethereal999

Регистрация: Dec 2003
Адрес: Москва
Сообщений: 38
Отправить сообщение для ethereal999 с помощью ICQ
andr64
Отлищщно ! Спасибо, дружище.

silin ох уж эти заковыристости...
__________________
Love & Peace!


Последний раз редактировалось ethereal999; 16.03.2006 в 21:00.
Создать новую тему Ответ Часовой пояс GMT +4, время: 10:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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