Управление Javascript> CSS через Flash - PullRequest
2 голосов
/ 19 апреля 2010

Идеальная ситуация / настройка: Страница, содержащая 1 Flash-ролик и отдельный div, содержащий несколько гиперссылок. Каждая из этих гиперссылок имеет уникальное имя класса, например: Скопировать код

  <ul>
  <li><a href="" class="randomname1"></a></li>
  <li><a href="" class="randomname2"></a></li>
  <li><a href="" class="randomname3"></a></li>
  <li><a href="" class="randomname4"></a></li>
  </ul>

Сам фильм Flash будет содержать 4 кнопки. Нажатие на одну из этих кнопок должно заставить Flash взаимодействовать с Jquery / JS и сказать ему выделить определенное имя класса.

Пока что идей

Для javascript это будет выглядеть как

$(function() {
function setClass(className) {$("."+className).css("background","red");}
});

И в определенных ключевых кадрах в Flash

   1. button 1
   ExternalInterface.call("setClass","randomname1");

   1. button 2
   ExternalInterface.call("setClass","randomname2");

   1. button 3
   ExternalInterface.call("setClass","randomname3");

   1. button 4
   ExternalInterface.call("setClass","randomname4");

Проблема в том, что он не очень хорошо работает, и я не уверен, правильно ли я заставляю Flash общаться с JS.

Какие-нибудь идеи или намеки снова направят меня в правильном направлении? Заранее спасибо

J.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2010

Метод setClass не будет виден флэш-коду - метод заключен в закрытие $(document).ready()

(Если вам интересно, ваш $(function()... звонок - это просто сокращение $(document).ready(function()...)

Вам необходимо прикрепить метод к объекту окна или другому глобально доступному объекту, чтобы его мог увидеть флэш-память. Что-то вроде:

$(function() {
    window.setClass = function(className) {$("."+className).css("background","red");}
});

что является самым простым подходом.

... или чтобы остановить загрязнение пространства имен окна:

$(function() {
    var ns = window.myNamespace = {};
    ns.setClass = function(className) {$("."+className).css("background","red");}
});

.... затем во Flash:

ExternalInterface.call("myNamespace.setClass","randomname1");

.... примечательно, однако, что я недостаточно знаком с flash, чтобы знать, будет ли работать второй пример.

0 голосов
/ 19 апреля 2010

Проверяли ли вы наличие ExternalInterface с ExternalInterface.available?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...