Действительно ли возможно перетащить с внешней стороны апплет Flash с JavaScript?

6
задан BoD 17 September 2008 в 12:22
поделиться

6 ответов

Этот заинтриговал меня. Я знаю, что jessegavin отправил некоторый код, в то время как я пошел для понимания этого, но этот тестируется. У меня есть суперпростой рабочий пример, который позволяет Вам перетащить к и от флэш-памяти. Это довольно грязно, когда я бросил его вместе во время моего обеденного перерыва.

Вот демонстрация

И источник

Базовый урок посещается непосредственно от Внешнего Интерфейса LiveDocs. Я добавил MyButton, таким образом, кнопка могла иметь некоторый текст. Большинство JavaScript происходит из того же примера LiveDocs.

Я скомпилировал это использование mxmlc.

12
ответ дан 8 December 2019 в 13:51
поделиться

ПРАВОВАЯ ОГОВОРКА я не протестировал этот код вообще, но идею, должна работать. Кроме того, это только обрабатывает перетаскивание к фильму флэш-памяти.

Вот некоторый код Actionscript 3.0, который использует класс ExternalInterface.

import flash.display.Sprite;
import flash.external.ExternalInterface;
import flash.net.URLLoader;
import flash.net.URLRequest;

if (ExternalInterface.available) {
  ExternalInterface.addCallback("handleDroppedImage", myDroppedImageHandler);
}

private function myDroppedImageHandler(url:String, x:Number, y:Number):void {

  var container:Sprite = new Sprite();
  container.x = x;
  container.y = y;
  addChild(container);

  var loader:Loader = new Loader();
  var request:URLRequest = new URLRequest(url);
  loader.load(request);

  container.addChild(loader);
}

Вот код HTML/jQuery

<html>
<head>
  <title>XHTML 1.0 Transitional Template</title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.2/jquery-ui.min.js"></script>
  <script type="text/javascript">
    $(function() {
      $("#dragIcon").draggable();

      $("#flash").droppable({ 
        tolerance : "intersect",
        drop: function(e,ui) {

          // Get the X,Y coords relative to to the flash movie
          var x = $(this).offset().left - ui.draggable.offset().left;
          var y = $(this).offset().top - ui.draggable.offset().top;

          // Get the url of the dragged image
          var url = ui.draggable.attr("src");

          // Get access to the swf
          var swf = ($.browser.msie) ? document["MyFlashMovie"] : window["MyFlashMovie"];

          // Call the ExternalInterface function
          swf.handleDroppedImage(url, x, y);

           // remove the swf from the javascript DOM
          ui.draggable.remove();
        }
      });
    });
  </script>
</head>
<body>

  <img id="dragIcon" width="16" height="16" alt="drag me" />

  <div id="flash">
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
      id="MyFlashMovie" width="500" height="375"
      codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
      <param name="movie" value="MyFlashMovie.swf" />
      <param name="quality" value="high" />
      <param name="bgcolor" value="#869ca7" />
      <param name="allowScriptAccess" value="sameDomain" />
      <embed src="MyFlashMovie.swf" quality="high" bgcolor="#869ca7"
        width="500" height="375" name="MyFlashMovie" align="middle"
        play="true" loop="false" quality="high" allowScriptAccess="sameDomain"
        type="application/x-shockwave-flash"
        pluginspage="http://www.macromedia.com/go/getflashplayer">
      </embed>
    </object>
  </div>

</body>
</html>
3
ответ дан 8 December 2019 в 13:51
поделиться

Я сказал бы, что возможно спасть до Flash, если Вы обнаруживаете, что объект тормозится к, который содержит материал флэш-памяти, и Вы устанавливаете свои перетаскиваемые объекты, чтобы иметь z-индекс выше, чем флэш-память. Затем, когда это отбрасывается, можно ли говорить с Flash с помощью JavaScript для сообщения этого, где и что было отброшено.

Однако наоборот, вероятно, намного более твердо, потому что необходимо было бы обнаружить, когда объект поражает границу фильма флэш-памяти, и "передайте" его обработчику JavaScript (создайте его в HTML, скройте его во флэш-памяти).

Вопрос состоит в том, чтобы, вероятно, знать, стоит ли это проблемы, или если можно, возможно, достигнуть всего в JS или в Flash?

1
ответ дан 8 December 2019 в 13:51
поделиться

Держитесь, точка инкапсуляции является допустимой, но флэш-память может выполнить функции JS, и Seldaek является правильным, что элемент HTML с более высоким z-индексом должен плавать на фильме флэш-памяти. Таким образом, если Вы сделали всю обработку перетаскивания в JS и имели флэш-память, читает ее собственные размеры и положение указателя в приложении, это могло сигнализировать о методах JS, что ведомый элемент (элементы) к указателю даже (особенно), когда указатель оставляет границы приложения флэш-памяти. Это было бы довольно волосатым все же.

1
ответ дан 8 December 2019 в 13:51
поделиться

Если целый сайт является одним большим встроенным флеш-файлом затем да, это возможно.

Я не думаю, что можно достигнуть его любой другой путь

0
ответ дан 8 December 2019 в 13:51
поделиться

Не возможный во флэш-памяти - если Вы не хотите перетащить к цели в том же приложении флэш-памяти.

Мог, вероятно, быть сделан с апплетом Java со знаком (но кто хочет идти по той дороге?)

0
ответ дан 8 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: