Autor Zpráva
tukann
Profil
Ahoj, poradí mi někdo jakožto člověku AS neznalému jak v následujícím kódu docílit toho, aby se název písně když je delší než šířka políčka posouval neustále a ne pouze po najetí myší nad název? Děkuji velice za případné řešení! V akci k vidění zde:http://strekovskehudebnileto.cz/pokus/



var zvuky:Array = new Array(); // Pole cest k mp3 souborům
var zvukyNazev:Array = new Array(); // Pole názvů skladeb
var maxPocet:Number; // Pocet skladeb

var pozice:Number = 0; // Neuložená pozice času přehrávaní
var pozice2:Number = 0; // Uložená pozice času přehrávaní
var a:Number = 0; // Číslo určující právě přehrávanou skladbu
var zvuk:Sound = new Sound();
var typ:Number; // Typ formátu zobrazovaného času
var noPlay:Boolean = true; // Má-li se hrát od začátku nebo od určité části

var barva:Color = new Color(playlist_mc.kryti_mc.barva_mc); // Barva schéma přehrávače
playlist_mc.kryti_mc.barva_mc._visible = false;

// Externí data, podle kterých se přehrávač nastaví
var kokie:SharedObject = SharedObject.getLocal("mp3player");
if (kokie.data.played == undefined) {
kokie.data.played = "stop";
}
if (kokie.data.cas == undefined) {
kokie.data.cas = new Number(0);
}
if (kokie.data.pisen == undefined) {
kokie.data.pisen = new Number(0);
}
if (kokie.data.nazev == undefined) {
kokie.data.nazev = "";
}
if (kokie.data.typ == undefined) {
kokie.data.typ = new Number(1);
typ = 1;
} else {
typ = kokie.data.typ;
}
if (kokie.data.skladbaTxt == undefined) {
kokie.data.skladbaTxt = true;
}

if (kokie.data.played == "play") {
a = kokie.data.pisen;
pozice2 = kokie.data.cas;
}

// Když se nahrává skladba a má se spustit od určitého času (voláno v "_root.onEnterFrame")
function nahrano() {
if (kokie.data.played == "play") {
var loading:Number = (zvuk.getBytesLoaded() / zvuk.getBytesTotal()) * 100;
if (loading > ((pozice2 * 1000) / zvuk.duration * loading) ) {
pause_btn._visible = true;
play_btn._visible = false;
zvuk.start(pozice2, 0);
delete nahrano;
}
}
}

// Získání seznamu hudby z "pisne.xml"
var externiData:XML = new XML();
externiData.ignoreWhite = true;
externiData.onLoad = function() {
var barvicka = "0x" + externiData.firstChild.attributes.barvaPozadi; // Nastavení barvy pozadi
if (externiData.firstChild.attributes.barvaPozadi != undefined) {
barva.setRGB(barvicka);
}
playlist_mc.kryti_mc.barva_mc._visible = true;

var maxPocet:Number = externiData.firstChild.childNodes.length; // Počet písniček
_root.maxPocet = maxPocet;
for(var j:Number = 0; j < maxPocet; ++j) {
var jmeno:String = externiData.firstChild.childNodes[j].attributes.URL;
zvuky[j] = jmeno; // Pole cest k písním
var nazev:String = externiData.firstChild.childNodes[j].firstChild.nodeValue;
zvukyNazev[j] = nazev; // Pole názvu písní
if (kokie.data.nazev == zvukyNazev[j]) { // Když minulá poslední píseň existuje
noPlay = false;
a = j;
}
}
var mezera:Number = 16.5;
for(var i:Number = 0; i < maxPocet; ++i) { // Vytvožní seznamu v playlistu
var jmenoPol:String = "polozka" + i + "_mc";
playlist_mc.list_mc.attachMovie("polozka", jmenoPol, i);
playlist_mc.list_mc[jmenoPol]._y = i * mezera;
playlist_mc.list_mc[jmenoPol].poradi_txt.text = i + 1;
playlist_mc.list_mc[jmenoPol].nazev_txt.text = zvukyNazev[i];
playlist_mc.list_mc[jmenoPol].poradi = i;
playlist_mc.list_mc[jmenoPol].onRelease = vyber;
playlist_mc.list_mc[jmenoPol].onRollOver = mysNad;
playlist_mc.list_mc[jmenoPol].onRollOut = mysPryc;
playlist_mc.list_mc[jmenoPol].onMouseMove = zakryti;
}
if (noPlay) { // Když minulá poslední píseň neexistuje, tak hrát od první skladby
delete nahrano;
a = 0;
pozice2 = 0;
}
zvuk.loadSound(zvuky[a], true);
zvuk.stop();
skladba_txt.text = zvukyNazev[a];
kokie.data.nazev = zvukyNazev[a];
posun();
konec = (playlist_mc.list_mc._y - playlist_mc.list_mc._height + playlist_mc.podklad_mc._height);
sirkaZobrazeni();
}
externiData.load("pisne.xml");


// Funkce pro kliknutí na skladbu v playlistu
function vyber() {
if (!playlist_mc.kryti_mc.hitTest(_xmouse, _ymouse, true)) {
for (var k:Number = 0; k < maxPocet; ++k) {
var jmenoPol:String = "polozka" + k + "_mc";
playlist_mc.list_mc[jmenoPol].gotoAndStop(1);
}
a = this.poradi;
this.gotoAndStop(2);
zvuk.stop();
zvuk.start();
zvuk.loadSound(zvuky[a], true);
zvuk.setVolume(hlasitost);
skladba_txt.text = zvukyNazev[a];
kokie.data.nazev = zvukyNazev[a];
pause_btn._visible = true;
play_btn._visible = false;
kokie.data.played = "play";
}
}

// Když je text delší než kolonka, tak text posouvat
var intervalPosTextu:Number;
var posTextuTed:Boolean = false;
function posouvaniTextu(co) {
var str:String = eval(co).nazev_txt.text;
var delka:Number = eval(co).nazev_txt.length;
eval(co).nazev_txt.text = str.substring(1, delka);
if (eval(co).nazev_txt.textWidth <= 95) {
clearInterval(intervalPosTextu);
}
}
// Funkce pro najetí kurzoru nad skladbu v playlistu
function mysNad() {
if (this._currentframe != 2) {
this.gotoAndStop(3);
}
if (this.nazev_txt.textWidth > 95) {
intervalPosTextu = setInterval(posouvaniTextu, 100, this);
posTextuTed = true;
}
}
// Funkce, když se sjede s kurzorem pryč
function mysPryc() {
if (this._currentframe != 2) {
this.gotoAndStop(1);
}
if (posTextuTed) {
this.nazev_txt.text = zvukyNazev[this.poradi];
clearInterval(intervalPosTextu);
posTextuTed = false;
}
}

// Zvýraznění aktuání přehrávané skladby
function posun() {
for (var k:Number = 0; k < maxPocet; ++k) {
var jmenoPol:String = "polozka" + k + "_mc";
playlist_mc.list_mc[jmenoPol].gotoAndStop(1);
}
var jmeno:String = "polozka" + a + "_mc";
playlist_mc.list_mc[jmeno].gotoAndStop(2);
}

// Posunutí playlistu
var posunutiListu:Number = 0;
var smerSamo:String;
var okSamo:Boolean = false;
var jmenoSkladby:String;
function posunListu() {
jmenoSkladby = "polozka" + a + "_mc";
if (playlist_mc.list_mc[jmenoSkladby]._y + posunutiListu < 0) {
smerSamo = "up";
okSamo = true;
}
if (playlist_mc.list_mc[jmenoSkladby]._y + posunutiListu > playlist_mc.podklad_mc._height - 20) {
smerSamo = "down";
okSamo = true;
}
}

// Mizení handKurzoru, když neni kurzor přímo na playlistu
function zakryti() {
if (this.hitTest(_xmouse, _ymouse, true) && playlist_mc.kryti_mc.hitTest(_xmouse, _ymouse, true)) {
this.useHandCursor = false;
} else {
this.useHandCursor = true;
}
}

// Funkce zobrazování času
function cas() {
// Aktuální čas
ted = Math.round(zvuk.position / 1000);
if (isNaN(ted)) {
ted = 0;
}
minuty = Math.floor(ted / 60);
sekundy = ted - (minuty * 60);
if (sekundy < 10) {
sekundy = "0" + sekundy;
}
// Celkový čas
celek = Math.round(zvuk.duration / 1000);
if (isNaN(celek)) {
celek = 0;
}
minutyC = Math.floor(celek / 60);
sekundyC = celek - (minutyC * 60);
if (sekundyC < 10) {
sekundyC = "0" + sekundyC;
}
// Čas pozpátku
X = celek - ted;
minutyX = Math.floor(X / 60);
sekundyX = X - (minutyX * 60);
if (sekundyX < 10) {
sekundyX = "0" + sekundyX;
}

// Formátování času podle typu
if (typ == 1) {
var cas = minuty + ":" + sekundy + " / " + minutyC + ":" + sekundyC;
} else if (typ == 2) {
var cas = "-" + minutyX + ":" + sekundyX + " / " + minutyC + ":" + sekundyC;
} else if (typ == 3) {
var cas = "-" + minutyX + ":" + sekundyX;
} else if (typ == 4) {
var cas = minuty + ":" + sekundy;
} else if (typ == 5) {
var cas = minutyC + ":" + sekundyC;
} else if (typ == 6) {
var cas = "";
}
return cas;
}

// Posouvání textu aktuální skladby, když je předlouhý
var intervalZobrazeni:Number;
var zobrazeniTed:Boolean = false;
function posouvaniTextuZobrazeni() {
var str:String = skladba_txt.text;
var delka:Number = skladba_txt.length;
skladba_txt.text = str.substring(1, delka);
if (skladba_txt.textWidth <= 110 - cas_txt.textWidth) {
clearInterval(intervalZobrazeni);
}
}

// Měnění velikosti textového pole aktuální skladby
function sirkaZobrazeni() {
skladba_txt._width = (typ != 6) ? 115 - cas_txt.textWidth : 123;
}

// Měnění formátu zobrazení času
casTxt_mc.onPress = function() {
typ++;
if (typ > 6) typ = 1;
kokie.data.typ = typ;
};

// Nastavení, zda-li má být zobrazována aktuální skladba
skladba_txt._visible = kokie.data.skladbaTxt;
skladbaTxt_mc.onPress = function() {
skladba_txt._visible = !skladba_txt._visible;
kokie.data.skladbaTxt = skladba_txt._visible;
};
// Posouvání času, když není celý zobrazený
skladbaTxt_mc.onRollOver = function() {
if (skladba_txt.textWidth > 110 - cas_txt.textWidth) {
intervalZobrazeni = setInterval(posouvaniTextuZobrazeni, 100);
zobrazeniTed = true;
}
};
skladbaTxt_mc.onRollOut = function() {
if (zobrazeniTed) {
skladba_txt.text = zvukyNazev
FlashManiac
Profil
melo by se jednat o udalosti v tech poslednich radcich
skladbaTxt_mc.onRollOver = function() {
if (skladba_txt.textWidth > 110 - cas_txt.textWidth) {
intervalZobrazeni = setInterval(posouvaniTextuZobrazeni, 100);
zobrazeniTed = true;
}
};
skladbaTxt_mc.onRollOut = function() {
if (zobrazeniTed) {
skladba_txt.text = zvukyNazev


zde oddelat ty udalosti onRoll a vlozit to tak, aby se to nasavovalo pri kazde zmene pisnicky
tukann
Profil
onRollOut
Díky moc, jdu si s tím hrát, netuším totiž co vložit aby došlo k "nasávání" při změně písničky...jinak co jsem na to koukal, myslel jsem, že jde o "// Posouvání času, když není celý zobrazený " na druhou stranu mi bylo divný co víc může být v čase audia než max hodiny, minuty a vteřiny...ke všemu ještě ten script pokračuje:

// Posouvání času, když není celý zobrazený
skladbaTxt_mc.onRollOver = function() {
if (skladba_txt.textWidth > 110 - cas_txt.textWidth) {
intervalZobrazeni = setInterval(posouvaniTextuZobrazeni, 100);
zobrazeniTed = true;
}
};
skladbaTxt_mc.onRollOut = function() {
if (zobrazeniTed) {
skladba_txt.text = zvukyNazev[a];
clearInterval(intervalZobrazeni);
zobrazeniTed = false;
}
};

// Zobrazování časového průběhu
var prejezd:Boolean = false;
var maxOsa:Number = 115;
osa_mc.onPress = function () {
prejezd = true
this.onEnterFrame = function() {
cas_mc._xscale = Math.max(0, Math.min(100, (_root._xmouse - 17) / maxOsa * loading_mc._xscale));
}
};
function osaRelease() {
prejezd = false;
klik = (_root._xmouse - 17) / maxOsa * 100;
pozice = ((klik / 100) * zvuk.duration) / 1000;
zvuk.stop();
zvuk.start(pozice, 1);
pause_btn._visible = true;
play_btn._visible = false;
kokie.data.played = "play";
delete this.onEnterFrame;
}
osa_mc.onRelease = osaRelease;
osa_mc.onReleaseOutside = osaRelease;


play_btn.onRelease = function() {
zvuk.start(pozice, 1);
pause_btn._visible = true;
play_btn._visible = false;
kokie.data.played = "play";
};
pause_btn.onRelease = function() {
pozice = zvuk.position / 1000;
zvuk.stop();
pause_btn._visible = false;
play_btn._visible = true;
kokie.data.played = "pause";
};
stop_btn.onRelease = function() {
pozice = 0;
zvuk.stop();
zvuk.start(pozice, 1);
zvuk.stop();
pause_btn._visible = false;
play_btn._visible = true;
kokie.data.played = "stop";
};

function dopDoz() { // Pro "doz_btn" a "dop_btn"
zvuk.stop();
zvuk.start();
zvuk.loadSound(zvuky[a], true);
zvuk.setVolume(hlasitost);
skladba_txt.text = zvukyNazev[a];
kokie.data.nazev = zvukyNazev[a];
pause_btn._visible = true;
play_btn._visible = false;
kokie.data.played = "play";
posun();
posunListu();
}
doz_btn.onRelease = function() {
if (a == 0) {
a = zvuky.length - 1;
} else {
a -= 1;
}
dopDoz();
};
dop_btn.onRelease = function() {
if (a == (zvuky.length - 1)) {
a = 0;
} else {
a += 1;
}
dopDoz();
};

// Když dohraje aktuální skladba, tak hrát další
zvuk.onSoundComplete = function() {
if (++a < maxPocet) {
// nic :)
} else {
a = 0;
}
zvuk.stop();
zvuk.start();
zvuk.loadSound(zvuky[a], true);
zvuk.setVolume(hlasitost);
skladba_txt.text = zvukyNazev[a];
kokie.data.nazev = zvukyNazev[a];
posun();
posunListu();
};

_root.onEnterFrame = function () {
// Nahrávání skladby
nahrano();
// Když uživatel mění časový průběh
if (!prejezd) {
cas_mc._xscale = Math.max(0, Math.min(100, (zvuk.position / zvuk.duration * loading_mc._xscale)));
}
maxOsa = loading_mc._xscale / 100 * 115;
osa_mc._xscale = loading_mc._xscale;
loading_mc._xscale = (zvuk.getBytesLoaded() / zvuk.getBytesTotal()) * 100;
// Rolování playlistu
rolovani();
// Zobrazování času
cas_txt.text = cas();
sirkaZobrazeni();
// Ukládání času a pořadí písně
kokie.data.cas = zvuk.position / 1000;
kokie.data.pisen = a;
}

// Fuknce pro rolování
var smer:String; // Směr pohybu playlistu
var ok:Boolean = false; // Jesli je povoleno posouvat playlist
var zacatek:Number = playlist_mc.list_mc._y;
var konec:Number;
var b:Number = 16.5; // O kolik posunout
function rolovani() {
if (ok) {
okSamo = false;
if (smer == "up") {
if (playlist_mc.list_mc._y < zacatek) {
playlist_mc.list_mc._y += b;
posunutiListu += b;
}
}
if (smer == "down") {
if (playlist_mc.list_mc._y > konec) {
playlist_mc.list_mc._y -= b;
posunutiListu -= b;
}
}
} else if (okSamo) {
if (playlist_mc.list_mc[jmenoSkladby]._y + posunutiListu > 20 && playlist_mc.list_mc[jmenoSkladby]._y + posunutiListu < 55) {
okSamo = false;
}
if (smerSamo == "up") {
if (playlist_mc.list_mc._y < zacatek) {
playlist_mc.list_mc._y += b;
posunutiListu += b;
}
} else if (smerSamo == "down") {
if (playlist_mc.list_mc._y > konec) {
playlist_mc.list_mc._y -= b;
posunutiListu -= b;
}
}
}
}
playlist_mc.nahoru_btn.onPress = function() {
smer = "up";
ok = true;
};
playlist_mc.nahoru_btn.onRelease = function() {
ok = false;
};
playlist_mc.dolu_btn.onPress = function() {
smer = "down";
ok = true;
};
playlist_mc.dolu_btn.onRelease = function() {
ok = false;
};

// Hlasitost
var hlasitost:Number = 100;
var posunutiVolume:Boolean = false;
volume_mc.klik_mc.onPress = function() {
posunutiVolume = true;
this.onEnterFrame = function() {
if (posunutiVolume) {
hlasitost = this._xmouse / (volume_mc.klik_mc._width) * 100;
hlasitost = Math.max(0, Math.min(100, hlasitost));
volume_mc.posun_mc._xscale = hlasitost;
zvuk.setVolume(hlasitost);
}
}
};
volume_mc.klik_mc.onRelease = function() {
posunutiVolume = false;
};
volume_mc.klik_mc.onReleaseOutside = function() {
posunutiVolume = false;
};



Každopádně ještě jednou díky za každou radu!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: