Categories
Работа Статии

Как се извиква JavaScript функция от Flash.

Наистина е много просто. Основният проблем е, че ако се използват неправилните методи или няма да работи при всички browser-и ( fscommand ) или ще иска потвърждение ( getURL ).

Има метод, който работи без посочените горе проблеми. Метода се нарича ExternalInterface, а в посочената по долу таблица е описано, в кои browser-и работи.

Browser Operating System
Internet Explorer 5.0 and higher Windows
Netscape 8.0 and higher Windows Macintosh
Mozilla 1.7.5 and higher Windows Macintosh
Firefox 1.0 and higher Windows Macintosh
Safari 1.3 and higher Macintosh

Както вече споменах, метода се казва ExternalInterface и можете да прочетете повече за него, на официалната документация на Adobe.

С няколко думи за какво служи и как работи.

Предполагам, че на всеки, който се е занимавал малко или много с Flash му се е искало да използва регулярни изрази, но ActionScript не ги поддържа. Или искате да разберете какво се случва по страница, чрез ваша си собствена JavaScript функция? Или чисто и просто имате по-добри JavaScript отколкото ActionScript такива.

Които и отгорените случаи да имате ето какво трябва да направите.

Във actions панела, където описването събитията, импортирайте external библиотеката.

import flash.external.*;

Във следващият ред става магията:

ExternalInterface.call( “JavaScript функцията, която ви вълнува”, “Параметри разни” );

Трябва разбира се и във HTML документа да напишете функцията и какво точно ще прави, но това е бял кахър 🙂 Публикувате си флаша и е готово.

В следващата статия ще разкажа и как се прави обратното, а именно да се извика ActionScript функция от JavaScript. Готино, нали?

Categories
Статии

Flash, урок 1

От известно време се занимавам доста с Flash. Последното ми предизвикателство беше да направя skin за FLVPlayback компонент, който освен стандартните бутони за пускане, паузиране, цял екран и лента за прогреса, трябваше да има и часовник, който да показва колко време остава до краят на клипа, или колко време е изминало до сега от пускането му. Прилагам кодът, който не съм измислил аз, но ми отне доста време докато го намеря и накарам да работи под Action Script 3

var minutes:Number = 0;
var seconds:Number = 0;
var totalMinutes:Number = 0;
var totalSeconds:Number = 0;

var l:Object = new Object();
l.enterFrame = function() {
totalMinutes = Math.floor(video_mc.totalTime / 60);
totalSeconds = Math.floor(
video_mc.totalTime) % 60;
minutes = Math.floor(
video_mc.playheadTime / 60);
seconds = Math.floor(
video_mc.playheadTime) % 60;
my_ta.text = ((minutes < 10) ? “0” + minutes : minutes) + “:” + ((seconds < 10) ? “0” + seconds : seconds) + ” / ” + ((totalMinutes < 10) ? “0” + totalMinutes : totalMinutes) + “:” + ((totalSeconds < 10) ? “0” + totalSeconds : totalSeconds);
}
addEventListener( Event.ENTER_FRAME, l.enterFrame );

Този код го слагате в Actions layer-а на вашият скин. Създавате си динамичен текст с име “my_ta” и времето ще почне да се показва 🙂

От показаното тук мисля, че лесно може да се ориентирате какво точно става. Повечето уроци из нета са свързани с показването на времето при “stateChange”, който се активира само при кликане на play/pause бутона.