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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.04.2006, 20:02
Olejan вне форума Посмотреть профиль Отправить личное сообщение для Olejan Найти все сообщения от Olejan
  № 1  
Ответить с цитированием
Olejan
[+6 16.05.06]

Регистрация: May 2004
Адрес: Россия
Сообщений: 175
Attention Эффект увеличение подгружаемой от 10% до 100% ее длины/ширины.

Воспользовался советом Flash-гуру, которые раскритиковали меня и пытался сделать вот что:
Недавно я сделал нормальную подгрузку картинки, при нажатии на кнопку. Этот скрипт я хочу доработать таким образом, чтобы подгружаемый JPG-файл увеличивался от 10% своей площади до 100%.
Вот код (красным изменения по поводу этой самой желаемой анимации):
Код:
clip.loadImage = function(file)
{
    this.image.removeMovieClip();
    this.createEmptyMovieClip("image", 0);
    this.image.loadMovie(file);
    this.onEnterFrame = function()
    {
        var l = this.image.getBytesLoaded();
        var t = this.image.getBytesTotal();
        
		persent = Math.round(l*100/t);
		tpers.text = persent + " %";
		
		if (t>0 && l>=t) {
			tpers.text = " ";
            // загрузка закончилась
            delete this.onEnterFrame;
            // центровка
        this.image._x -= Math.round(this.image._width/2);
        this.image._y -= Math.round(this.image._height/2);
		// анимация
		var image_height: Number = this.image._height/10;
		var image_width: Number = this.image._width/10;
		while ((image_height = this.image._height) && 
			   (image_width = this.image._width)) {
			this.image._height +=image_height;
			this.image._width +=image_width;
			this.setInterval(aaa, 500);
										        };    };
	};

};
Что не так в красном коде? Идея такая: сначала присваиваю переменным image_height и image_width 10% настоящей высоты/ширины картинки, потом хочу чтобы при каждом увеличении (this.image._height +=image_height) высоты/ширины на 10% была задержка 0,5 секю А ничего не происходит - картинка вообще не грузится. Подскажите...

Старый 25.04.2006, 20:04
Olejan вне форума Посмотреть профиль Отправить личное сообщение для Olejan Найти все сообщения от Olejan
  № 2  
Ответить с цитированием
Olejan
[+6 16.05.06]

Регистрация: May 2004
Адрес: Россия
Сообщений: 175
В конце вообще-то не 2 операторные скобки, а 4 должно быть...

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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
(image_height == this.image._height) && (image_width == this.image._width)

Старый 25.04.2006, 20:30
Olejan вне форума Посмотреть профиль Отправить личное сообщение для Olejan Найти все сообщения от Olejan
  № 4  
Ответить с цитированием
Olejan
[+6 16.05.06]

Регистрация: May 2004
Адрес: Россия
Сообщений: 175
2 silin:
Мой косяк, теперь заргузка есть, но все равно анимации нет.

Старый 25.04.2006, 21:07
Olejan вне форума Посмотреть профиль Отправить личное сообщение для Olejan Найти все сообщения от Olejan
  № 5  
Ответить с цитированием
Olejan
[+6 16.05.06]

Регистрация: May 2004
Адрес: Россия
Сообщений: 175
Код:
var image_height: Number = this.image._height/10;
		var image_width: Number = this.image._width/10;
		this.image._height = image_height;
		this.image._width = image_width;
		for (i=0; i<9; i++) {
			this.image._height +=image_height;
			this.image._width +=image_width;
			this.image.setInterval(aaa, 5000);
		};
Вот нормальный код, вместо красного того. Ошибка я думаю в строчке:
this.image.setInterval(aaa, 5000);
Как сделать задержку в N секунд (милисекунд), после каждого шага цикла?
Подскажите...

Старый 25.04.2006, 21:25
Olejan вне форума Посмотреть профиль Отправить личное сообщение для Olejan Найти все сообщения от Olejan
  № 6  
Ответить с цитированием
Olejan
[+6 16.05.06]

Регистрация: May 2004
Адрес: Россия
Сообщений: 175
Код:
	// анимация
					function pauza(p) {
				t = getTimer( );
				for (i = t; i < t + (p * 1000); i = getTimer( )) {
					}
				}
		var image_height: Number = this.image._height/10;
		var image_width: Number = this.image._width/10;
		this.image._height = image_height;
		this.image._width = image_width;
		for (i=0; i<9; i++) {
			this.image._height +=image_height;
			this.image._width +=image_width;
				pauza(1);

		};
Изменил тот кусок вот на этот - все равно что-то не так.
Люди, подскажите... плиЗЗЗ!

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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Цитата:
Как сделать задержку в N секунд (милисекунд), после каждого шага цикла?
никак не сделать..
можно действия, выполняемые в цикле в сетинтвальную функцию засунуть:
Код:
clip.loadImage = function (file) {
	this.image.removeMovieClip();
	this.createEmptyMovieClip("image", 0);
	this.image.loadMovie(file);
	this.onEnterFrame = function() {
		var l = this.image.getBytesLoaded();
		var t = this.image.getBytesTotal();
		persent = Math.round(l*100/t);
		tpers.text = persent+" %";
		if (t>0 && l>=t) {
			tpers.text = " ";
			// загрузка закончилась
			delete this.onEnterFrame;
			// центровка
			this.image._x -= Math.round(this.image._width/2);
			this.image._y -= Math.round(this.image._height/2);
			var s=this.image._xscale=this.image._yscale=10;
			var img=this.image;
			var intrv=setInterval(function(){
					s+=10;
					img._xscale=img._yscale=s;
					if(s==100)clearInterval(intrv);
				},500);
		}
	};
};

Старый 25.04.2006, 21:38
Olejan вне форума Посмотреть профиль Отправить личное сообщение для Olejan Найти все сообщения от Olejan
  № 8  
Ответить с цитированием
Olejan
[+6 16.05.06]

Регистрация: May 2004
Адрес: Россия
Сообщений: 175
На странице:
http://www.flasher.ru/forum/showthre...EF%E0%F3%E7%E0
Прочитал и переделал свой код:
Код:
clip.loadImage = function(file)
{
    this.image.removeMovieClip();
    this.createEmptyMovieClip("image", 0);
    this.image.loadMovie(file);
    this.onEnterFrame = function()
    {
        var l = this.image.getBytesLoaded();
        var t = this.image.getBytesTotal();
        
		persent = Math.round(l*100/t);
		tpers.text = persent + " %";
		
		if (t>0 && l>=t) {
			tpers.text = " ";
            // загрузка закончилась
            delete this.onEnterFrame;
			// анимация
		var image_height: Number = this.image._height/10;
		var image_width: Number = this.image._width/10;
		this.image._height = image_height;
		this.image._width = image_width;
		
		var oldTime:Number= getTimer();
			if (getTimer()-oldTime>500) {
			this.image._height++;
			this.image._width++;
			}
			
            // центровка
        this.image._x -= Math.round(this.image._width/2);
        this.image._y -= Math.round(this.image._height/2);
				
    };
	};

};
НУ, СЕЙЧАС ТО ПОЧЕМУ НЕ РАБОТАЕТ???
ПОМОГИТЕ, ЧЕЛОВЕК ПОГИБАЕТ!!!

Старый 25.04.2006, 22:01
Olejan вне форума Посмотреть профиль Отправить личное сообщение для Olejan Найти все сообщения от Olejan
  № 9  
Ответить с цитированием
Olejan
[+6 16.05.06]

Регистрация: May 2004
Адрес: Россия
Сообщений: 175
2 silin:
Спасибо. Работает. Последнее, а как сделать так, чтобы картинка при увеличении всегда была по центру, то есть видимо после каждого шага должна быть
Код:
// центровка
        this.image._x -= Math.round(this.image._width/2);
        this.image._y -= Math.round(this.image._height/2);
но что-то не получается - куда только не пытался я этот кусок впихнуть...

Старый 25.04.2006, 22:20
RandomUser вне форума Посмотреть профиль Отправить личное сообщение для RandomUser Найти все сообщения от RandomUser
  № 10  
Ответить с цитированием
RandomUser

Регистрация: Mar 2006
Адрес: Odessa
Сообщений: 157
А скажи, только честно... Ты в школе арифметику проходил?
Найди учебники за 5-6 класс, найдешь там много интерестного для себя

Код:
this.image._x = Math.round((_root._width-this.image._width)/2);
this.image._y = Math.round((_root._height-this.image._height)/2);
Вроде бы так...

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

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

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


 


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


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