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

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

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

Регистрация: Nov 2006
Адрес: arktisklandet
Сообщений: 13
По умолчанию загадочный флеш, или что такое с _alpha?

Здравствуйте! Может, просто я глупая и не понимаю элементарных вещей.

Интересная проблема для меня: вот, пишу в руте для мувиклипов TOR:
Код:
TOR.onPress = function() {
	contt = "";
	conth.unloadMovie();
	contv.unloadMovie();
	if (this.num<10) {
		III = "00";
	} else {
		III = "0";
	}
	if (this.pos == "h") {
		v.gotoAndStop(1);
		h.gotoAndPlay(2);
		conth._alpha = 0;
		conth.loadMovie("FullSize/"+III+this.num+".jpg", 1);
		this.onEnterFrame = function() {
			if (conth._alpha<100 && ja == true) {
				conth._alpha += 4;
				trace(conth._alpha);
			}
			trace(ja);
		};
	} else {
		h.gotoAndStop(1);
		v.gotoAndPlay(2);
		contv._alpha = 0;
		contv.loadMovie("FullSize/"+III+this.num+".jpg", 1);
		this.onEnterFrame = function() {
			if (contv._alpha<100 && ja == true) {
				contv._alpha += 4;
				trace(conth._alpha);
			}
			trace(ja);
		};
	}
};
на сцене 3 контейнера contt, conth, contv для текста, горизонтальных и вертикальных картинок соотвественно. Параметр ja = true означает, что какой-либо мувиклип, отвечающий за подложку под картинки, полностью проигрался и можно что-либо грузить в соотвествующий контейнер (если мувиклип не проигрался, то он передает _parent.ja = false). Вроде бы все правильно, верно? А теперь смотрим трейс:

Цитата:
false
...
false
3.90625
true
7.8125
true
...
62.5
true
66.40625
true
true
true
...
иногда он конечно доходит до 101.5625, так как условие все-таки нужно выполнять. А иногда и вовсе пишет: ja равен false всегда.

Итак, вот вопросы: почему величина прироста cont._alpha += 4; не целое число, как я прошу, а какая-то близкая 3.90625? Почему, если даже проигрался мувиклип с подложкой (там это видно), иногда не передается в рут значение ja = true? Почему cont._alpha иногда не доходит до 100, и застревает где-то на полпути?

Флеш — ужасно загадочная и странная штука 8).

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

Регистрация: Jun 2005
Адрес: Moscow - immigrate from Volgodonsk
Сообщений: 2,534
да, глюки бывают, но всеже ничего загадочного, как много раз тут меня убеждали это не во флэше дело а в ручках ))) с альфа сто раз обсуждалось это так надо не пугайтесь ))) во вторых нужно убивать onEnterFrame, из за этого могут быть глюки полюбе))) а в остальном , это ваша программа, и трудно сказать что она там должна делать а что не должна )))

Старый 06.11.2006, 22:26
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 3  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Может я что не догоняю, но вам не кажеться странным, в теле функции onPress на if объявлять еще одну функцию onEnterFrame, по моему ее там можно на худой конец вызвать, а объявлять то каждый раз при выполнении if зачем?

Старый 06.11.2006, 22:33
sa old вне форума Посмотреть профиль Отправить личное сообщение для sa old Найти все сообщения от sa old
  № 4  
Ответить с цитированием
sa old
 
Аватар для sa old

Регистрация: Nov 2006
Адрес: arktisklandet
Сообщений: 13
Вот вот! Я понимаю все коварство onEnterFrame, и просила подсказать альтернативу, так как знаний явно недостаточно. Вот и пост. Но пока пытаюсь вообще избавиться от onEnterFrame. И может ли он влиять на то, что значение ja не передается в рут?

Старый 06.11.2006, 22:51
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 5  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Я бы предложил примерно такой сценарий:
На onEnterFrame служебная переменная принимает значение true.
Далее, в анимации в удобоваримом месте - когда анимация подложки завершена, идет проверка этого факта, контейнер приобретает _alpha=0 и начинается загрузка контекста. При выполнении условия загрузка завершена, через setInterval меняется альфа контейнера.

Старый 06.11.2006, 23:13
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 6  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Всё верно, альфа канал имеет 256 уровней ( как и любой другой канал RGB записываемый одним битом). Но для удобства альфа канал был выведен в отделное свойство, которое позволяет нам работать с процентами. На самом деле ставя значение _alpha = 50% мы имеем дело с альфа каналом равным (100-50)/100*256 = 128.
Так же переводится любое число , которое мы присваеваем альфа каналу.
Реальный "шаг" альфы есть 100/256 = 0,390625. И если мы присваеваем альфе число не кратное 0,390625, то альфа принимает значение наиболее близкого кратного числа. К примеру 40 не кратно 0,390625. Но наиболее близкое число 39,84375. Поэтому код
Код:
_alpha = 40;
trace(_alpha) // 39.84375
выведет
39.84375.
К тому же проценты нужны для нахождения значения альфа канала во вложенных мувиках. Ну когда сам клип имеет альфу 50%, и ещё его дочерний клип имеет 50%, тогда суммарная альфа дочернего клипа будет 25%
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

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

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
Поэтому лучше делать:
mc.my_alpha += 4; mc._alpha = mc.my_alpha;
Про "коварство onEnterFrame" - позабавило Ну, можно делать по окончании this.onEnterFrame = null;
__________________
Верить никому нельзя. Мне - можно. :)

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

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

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


 


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


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