1

Как я понимаю, ActionScript используется в основном для управления графическим выходом на веб-сайтах Flash: например, на основе флеш-игр.ActionScript: Выполнять неграфические операции

Однако, мне бы хотелось, чтобы ActionScript выполнял задачи, не связанные с графическим выходом. Задачи, которые по соображениям совместимости браузера, более подходят для ActionScript: например, для загрузки файлов.

Возможно ли использовать ActionScript вместо JavaScript или для выполнения задач, которые невозможно с использованием JavaScript, например, для загрузки файлов?

Возможны ли следующие варианты:

  • Запустить ActionScript на HTML-кнопке Нажмите?
  • Отправить информацию на ActionScript из HTML/JavaScript?
  • Информация о процессе без графического вывода в ActionScript?
  • Ouptut информация из ActionScript в HTML/JavasScript?

Я хочу знать, если ActionScript может делать то, что я желаю.

У меня будет изображение правильных функций для вызова.

ответ

1

ExternalInterface является вашим другом: http://help.adobe.com/nl_NL/Flash/CS5/AS3LR/flash/external/ExternalInterface.html

Некоторые советы при использовании ExternalInterface:

  • набор allowScriptAccess к "всегда" в коде HTML вставлять
  • убедитесь, что вспышка имеет идентификатор в вашем html-код

Некоторые простые примеры:

1. Захват значение от JavaScript флэш

// actionscript 3 code 
if (ExternalInterface.available) 
{ 
    var url:String = ExternalInterface.call("document.location"); 

    // output to textfield 
    var t:TextField = new TextField(); 
    addChild(t); 
    t.text = url; 
} 

2.Вызов функции с параметрами от вспышки

// actionscript 3 code 
if (ExternalInterface.available) 
{ 
    var result:String = "Flash rocks" 
    ExternalInterface.call("alert", result); 
} 

3. Вызов из Java-функции с параметрами для Flash:

// javascript 
window.onLoad = function() 
{ 
    document.getElementById('flashId').doSomething("javascript rocks"); 
} 

.. и

// actionscript 3 

if (ExternalInterface.available) 
{ 
    ExternalInterface.addCallback("doSomething", handleSomethingFromJavascript);// links js function to as3 function 
    function handleSomethingFromJavascript(value:String):void 
    { 
     // output to textfield 
     var t:TextField = new TextField(); 
     addChild(t); 
     t.text = value; 
    } 
} 

Вы можете сделать много материала между flash и javascript, так как вы можете видеть, что интеграция почти безболезненна! Единственное замечание: внутри Flash ExternalInterface недоступно, поэтому вам нужно протестировать его в браузере. Вы можете сделать прозрачный Flash-объект, используя wmode="transparent". Вы не можете использовать display:none или visibility (css), потому что тогда вспышка не выполняется или действует медленнее. Чтобы убедиться, что он продолжает работать, поместите его position:fixed (css) на страницу в углу или что-то в этом роде. Браузеры запускают флэш-объект в неактивном режиме (медленнее), когда он не работает или неактивен (т.е. на неактивной вкладке)

+1

Привет, Марк. +1 и спасибо за отличный ответ. Я буду использовать вышеперечисленные функции, и я вижу, что то, что я пытаюсь выполнить, отлично выполнимо. Поскольку этот ответ совершенно и полностью отвечает на мой вопрос, я отмечаю его как * Принятый ответ * –

+0

Спасибо за добрые слова –

1

Вы не можете поменять javascript на ActionScript, но вы можете взаимодействовать с ним.

«Запустить ActionScript на кнопке HTML Нажмите?» - Да, это возможно через ExternalInterface.registerCallback. Однако многие действия (iirc, открытие браузера файлов) могут выполняться только при взаимодействии с пользователем во флэш-памяти, поэтому для этого вам понадобится кнопка вспышки.

«Отправить информацию в ActionScript из HTML/JavaScript?» Также через externalInterface или flashvars (но только при запуске).

«Обработка информации без графического вывода в ActionScript?» - Конечно, это язык программирования. Что у тебя было на уме?

«Информация об Ouptut из ActionScript в HTML/JavasScript?» - да, также через ExternalInterface.

+0

+1, спасибо за хорошие ответы. Вы спросили меня: «Что я имел в виду» относительно выполнения ActionScript без графического вывода. Ну, я не хочу, чтобы включать Flash-апплет, чтобы включить ActionScript в мою веб-страницу. Я думал, что ActionScript был разработан с целью поддержки Flash-объектов на веб-сайте, и поэтому он неотделим от них. –

+0

Ну, вам нужно, чтобы swf отображался где-то на вашей странице, чтобы выполнить actioncript, никоим образом не обойти это. Вы не можете использовать его как javascript (непосредственно на веб-странице). –

+0

Да, это то, что я имел в виду. Но я думаю, объект Flash с важными объектами ActionScript может быть скрыт на веб-странице, это правильно? Другими словами, это не повредит дизайну. –

Смежные вопросы