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

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

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

Регистрация: Mar 2009
Сообщений: 19
По умолчанию Проблема с "появлением", при увеличивании _alpha

Гружу данные из xml и по ним строю график. Пытаюсь сделать "появление" используя альфа канал. Проблема в том, что строиться только последний столбец, остальные почему-то игнорируются.
Подскажите плз в чем проблема
Код AS1/AS2:
my_xml = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(ok) {
if (ok) {
len = my_xml.childNodes[0].childNodes.length;
F_createAlphaGraphic();
}
};
my_xml.load("data1.xml");
 
F_createAlphaGraphic = function(){
 
for (var i = 0; i<len; i++) {
_root.createEmptyMovieClip("gr"+i, i);
var gr = _root["gr"+i];
gr._alpha=0;
gr._x = i*20+35;
var col = my_xml.childNodes[0].childNodes[i].attributes.value;
var Y:Number=360;
gr.onAlpha = function(){
if(gr._alpha<50){
gr.beginFill(0xBB62E1, gr._alpha/2);
gr.lineStyle(2, 0xBB62E1, gr._alpha+50);
gr.moveTo(gr._x, Y-col/4);
gr.lineTo(gr._x, Y);
gr.lineTo(gr._x+30, Y);
gr.lineTo(gr._x+30, Y-col/4);
gr.endFill();
gr._alpha+=0.5;
}
}
setInterval(gr.onAlpha,100);
}
};
Вложения
Тип файла: txt Data1.txt (530 байт, 60 просмотров)

Старый 24.03.2009, 07:21
Alkaz вне форума Посмотреть профиль Отправить личное сообщение для Alkaz Найти все сообщения от Alkaz
  № 2  
Ответить с цитированием
Alkaz

Регистрация: May 2006
Адрес: Нск
Сообщений: 91
1. если вы делаете "появление" с использованием альфы, то зачем тогда каждый раз перерисовывать графику? я имею ввиду что beginFill стоит внутри таймера.
2. переменная gr у вас меняется при пробеге цикла, последним ее значением будет _root["gr"+(len-1)] - по таймеру вы меняете прозрачность у переменной gr, соответственно только у последнего мувика ссылку на который мы ей присвоили. вот так примерно:
Код AS1/AS2:
var Y:Number=360;
gr.beginFill(0xBB62E1, gr._alpha/2);
gr.lineStyle(2, 0xBB62E1, gr._alpha+50);
gr.moveTo(gr._x, Y-col/4);
gr.lineTo(gr._x, Y);
gr.lineTo(gr._x+30, Y);
gr.lineTo(gr._x+30, Y-col/4);
gr.endFill();
gr.onAlpha = function(){
	if(this._alpha<50){
		this._alpha+=11;
	}
}
setInterval(gr, "onAlpha", 100);
будет работать. но это все лучше все равно переписать
3. не забывайте сохранить свои таймеры чтобы потом их подчищать когда они больше не нужны:
Код AS1/AS2:
gr.onAlpha = function(){
	if(this._alpha<50){
		this._alpha+=11;
	}
	else
	{
		clearInterval(this.timer);
	}
}
gr.timer = setInterval(gr, "onAlpha", 100);
4. я бы вообще наверное использовал один таймер в руте с пробегом по циклу и вызовом метода onAlpha у каждого мувика. по крайней мере проще контроллировать таймер.
5. я бы советовал отказаться от использования вложенных функций.

Старый 24.03.2009, 09:26
sereg вне форума Посмотреть профиль Отправить личное сообщение для sereg Найти все сообщения от sereg
  № 3  
Ответить с цитированием
sereg

Регистрация: Mar 2009
Сообщений: 19
Мега спасибо!!))

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

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

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


 


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


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