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

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

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

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
По умолчанию обнуление бар полоски при потоковой загрузке mp3

Такая проблема:
1)Есть XML галерея,в которой при клике на люьой из фоток,грузится соответствующяя музыка.
2)после щелчка,фотка _visible = false,а на её месте 2 бар-ползунка - один отбражает сколько mp3шки загрузилось,а другой - сколько проигралось,ну и плюс соответствующие текстовые поля.естественно для каждой фотки,своя такая приблуда.

Проблема в следующем - при первом нажатии все ОК,музон играет циферки и полоски ползут,а вот при нажатии на другие фотки,музон тож играет,а вот циферки и полоски продолжают двигаться с той же позиции в которой остановились после 1 раза.

Код:
var Play:Boolean = true;
var paus:Boolean = true;
var SL:Number = 0;
var L:Number = 0;
var T:Number = 0;
var ST:Number = 0;
var Pr:Number = 0;
var Spr:Number = 0;
var El = null;
var Vos:Boolean = true;
var KonSound:Sound = new Sound();
KonSound.stop();
//tra-ta-ta
//
function fotoPress() {
	if (Play) {
		Play = false;
		Vos = false;
		El = this.link;
		KonSound.loadSound(El,true);
		//KonSound.start();
		this._parent.attachMovie("stop","stop_mc",this._parent.getNextHighestDepth());
		this._parent.stop_mc._x = this._x+38;
		this._parent.stop_mc._y = this._y+55;
		this._parent.attachMovie("play_pause","play_mc",this._parent.getNextHighestDepth());
		this._parent.play_mc._x = this._x+10;
		this._parent.play_mc._y = this._y+55;
		//Регулятор громкости
		var Shkala:MovieClip = this._parent.createEmptyMovieClip("shkala_mc", this._parent.getNextHighestDepth());
		var Gr:MovieClip = this._parent.createEmptyMovieClip("Gr_mc", this._parent.getNextHighestDepth());
		pozun(Shkala,0xdddddd,100);
		with (Gr) {
			beginFill(0x00ffff,100);
			moveTo(0,0);
			lineTo(5,-9);
			lineTo(-5,-9);
			lineTo(0,0);
			endFill();
		}
		Shkala._x = this._x+65;
		Shkala._y = this._y+54;
		Shkala._height = 0.3;
		Shkala._width = 50;
		Gr._x = this._x+115;
		var top = Gr._x;
		Gr._y = this._y+54;
		Gr.onPress = function() {
			this.startDrag(false,Shkala._x,Shkala._y,(Shkala._x+Shkala._width),Shkala._y);
			this.onEnterFrame = function() {
				KonSound.setVolume(100-(top-this._x)*2);
			};
		};
		Gr.onRelease = Gr.onReleaseOutside=function () {
			this.stopDrag();
			delete this.onEnterFrame;
		};
		//Загрузка функций
		Pla(this);
		Sto(this);
		End(this);
		foto(this);
		PRO(this);
		var IN = setInterval(PRO, 30, this);
	}
}
// * * * * * * * * *   Ф У Н К Ц И Я   П Л Е Е Р А  * * * * * * * * *
//Клавиша Плей
function Pla(mc:MovieClip) {
	mc._parent.play_mc.onPress = function() {
		if (paus) {
			this.gotoAndStop(2);
			KonSound.stop();
			paus = false;
		} else {
			paus = true;
			this.gotoAndStop(1);
			KonSound.start(SL);
		}
	};
}
//Клавиша Стоп
function Sto(mc:MovieClip) {
	mc._parent.stop_mc.onPress = function() {
		mc.enabled = true;
		Play = true;
		Vos = true;
		El = null;
		KonSound.stop();
		clearInterval(IN);
		mc.ramka_mc.removeMovieClip();
		mc.pic._visible = true;
		mc._parent.stop_mc.removeMovieClip();
		mc._parent.play_mc.removeMovieClip();
		mc._parent.Gr_mc.removeMovieClip();
		mc._parent.shkala_mc.removeMovieClip();
	};
}
//Конец проигрования
function End(mc:MovieClip) {
	KonSound.onSoundComplete = function() {
		mc.enabled = true;
		Play = true;
		clearInterval(IN);
		mc.ramka_mc.removeMovieClip();
		mc.pic._visible = true;
		mc._parent.stop_mc.removeMovieClip();
		mc._parent.play_mc.removeMovieClip();
		mc._parent.Gr_mc.removeMovieClip();
		mc._parent.shkala_mc.removeMovieClip();
	};
}
//Функция визуальных элементов
function foto(mc:MovieClip) {
	mc.enabled = false;
	mc.pic._visible = false;
	mc.createEmptyMovieClip("ramka_mc",this.getNextHighestDepth());
	mc.ramka_mc._x = 0;
	mc.ramka_mc._y = 45;
	//Рисование бар-полоски и ползунка
	var Bar:MovieClip = mc.ramka_mc.createEmptyMovieClip("bar_mc", mc.ramka_mc.getNextHighestDepth());
	var Polzun:MovieClip = mc.ramka_mc.createEmptyMovieClip("polzun_mc", mc.ramka_mc.getNextHighestDepth());
	polzun(Polzun,0xff0000,100);
	polzun(Bar,0xc4c4c4,100);
	//размер
	mc.ramka_mc.bar_mc._width = 120;
	mc.ramka_mc.bar_mc._height = 4;
	mc.ramka_mc.polzun_mc._width = 120;
	mc.ramka_mc.polzun_mc._height = 3;
	//выравнивание
	mc.ramka_mc.bar_mc._x = mc.ramka_mc.polzun_mc._x=10;
	mc.ramka_mc.bar_mc._y = -10;
	mc.ramka_mc.polzun_mc._y = -8;
	//создать текствое поле для отображения Времени проигрывания
	mc.ramka_mc.createTextField("Pr_txt",this.getNextHighestDepth(),35,-30,100,30);
	mc.ramka_mc.Pr_txt.selectable = false;
	mc.ramka_mc.Pr_txt.textColor = 0xcccccc;
	mc.ramka_mc.Pr_txt.setNewTextFormat(imgNameFormat);
	//создать текстовое поле для отображения громкости
	mc.ramka_mc.createTextField("Gr_txt",6,80,10,30,20);
	mc.ramka_mc.Gr_txt.selectable = false;
	mc.ramka_mc.Gr_txt.textColor = 0xcccccc;
	mc.ramka_mc.Gr_txt.size = 10;
	mc.ramka_mc.Gr_txt.setNewTextFormat(imgNameFormat);
}
//Проверка загуженности и проигронасти
function PRO(mc:MovieClip) {
	L = KonSound.getBytesLoaded();
	T = KonSound.getBytesTotal();
	SL = KonSound.position/1000;
	ST = KonSound.duration*T/L/1000;
	Pr = Math.round(L/T*100);
	SPr = Math.round(SL/ST*100);
	var min = Math.floor(SL/60);
	var sec = Math.floor(SL%60);
	var Min = Math.floor(ST/60);
	var Sec = Math.floor(ST%60);
	if (sec<10) {
		sec = "0"+sec;
	}
	if (Sec<10) {
		Sec = "0"+Sec;
	}
	mc.ramka_mc.bar_mc._width = (L/T*100);
	mc.ramka_mc.polzun_mc._width = (SL/ST*100);
	mc.ramka_mc.Pr_txt.text = min+":"+sec+"/"+Min+":"+Sec;
	mc.ramka_mc.Gr_txt.text = KonSound.getVolume();
}
Функция fotoPress вызывается в onLoadInit галереи с фотками
Как я понял проблема в том что KonSound.loadSound();
Вызывается внутри этой функции,если её вывести за пределы то все нормально,но тогда грузится тока 1 mp3шка,потому что,как отследить под какой фоткой ,какой адрес mp3шки.
Сори за код,но решил перестраховаться и весь привести.

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

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Проблема решена

Старый 06.09.2008, 13:21
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 3  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
scarbo, отлично что Вы справились сами, растете))))
Я хотел просто по-дружески посоветовать одну мелочь.
Вы не курите? Я вот курю((( И бывает, купишь блок сигарет, а по дороге домой к тебе гопник какойнибудь подрулит - дай сигаретку. И не скажешь "нету" - в руках блок. И начинаешь его распечатывать.... К чему это я? У Вас выражение mc.ramka_mc повторяется 22 раза. 22 раза плееру приходится искать mc, "распаковывать" его, искать ramka_mc. А мне, как человеку, пытающемуся понять Ваш код, приходится на каждой строчке делать бросок к середине предложения и там искать точку и читать уже от нее. Как все это сделать по-уму? Очень просто. Это называется ссылкой. При ее использовании плеер сразу может перейти к нужному свойству или методу. И код получается гораздо читабельней:
Код:
//Функция визуальных элементов
function foto(mc:MovieClip) {
    mc.enabled = false;
    mc.pic._visible = false;
    var ramka:MovieClip = mc.createEmptyMovieClip("ramka_mc", mc.getNextHighestDepth());
    ramka._x = 0;
    ramka._y = 45;
    //Рисование бар-полоски и ползунка
    var Bar:MovieClip = ramka.createEmptyMovieClip("bar_mc", ramka.getNextHighestDepth());
    var Polzun:MovieClip = ramka.createEmptyMovieClip("polzun_mc", ramka.getNextHighestDepth());
    polzun(Polzun,0xff0000,100);
    polzun(Bar,0xc4c4c4,100);
    //размер
    Bar._width = 120, Bar._height = 4;
    Polzun._width = 120, Polzun._height = 3;
    //выравнивание
    Bar._x = Polzun._x = 10, Bar._y = -10;
    Polzun._y = -8;
    //создать текствое поле для отображения Времени проигрывания
    var pr:TextField = ramka.createTextField("Pr_txt", ramka.getNextHighestDepth(),35,-30,100,30);
    pr.selectable = false;
    pr.textColor = 0xcccccc;
    pr.setNewTextFormat(imgNameFormat);
    //создать текстовое поле для отображения громкости
    var gr:TextField = ramka.createTextField("Gr_txt",6,80,10,30,20);
    gr.selectable = false;
    gr.textColor = 0xcccccc;
    gr.size = 10;
    gr.setNewTextFormat(imgNameFormat);
}
И заодно нашлась распространенная ошибка - почемуто все обожают писать "this.getNextHighestDepth()", забывая что здесь this указывает вовсе не на левую часть выражения, это же не тело функции, а аргументы - их область видимости соответствует текущей.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 06.09.2008 в 13:25.
Старый 06.09.2008, 14:03
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 4  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Wolsh,спасибо.Про ссылки я знаю,и сейчас уже все переправил,просто надо было KonSound:Sound = new Sound() засунуть в функцию нажатия,ну и остальное причесать.

А КУРИТЬ ВРЕДНО!!!!!!
Я ПРОБОВАЛ ,МНЕ НЕ ПОНРАВИЛОСЬ.

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

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

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


 


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


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