هل من الممكن السحب والإسقاط من/إلى خارج برنامج Flash الصغير باستخدام JavaScript؟

StackOverflow https://stackoverflow.com/questions/82509

  •  01-07-2019
  •  | 
  •  

سؤال

لنفترض أنني أريد صفحة ويب تحتوي على برنامج Flash وأرغب في سحب وإفلات بعض الكائنات من أو إلى بقية صفحة الويب، هل هذا ممكن على الإطلاق؟

مكافأة إذا كنت تعرف موقعًا إلكترونيًا في مكان ما يفعل ذلك!

هل كانت مفيدة؟

المحلول

هذا واحد أثار اهتمامي.أعلم أن jessegavin نشر بعض التعليمات البرمجية أثناء ذهابي لمعرفة ذلك، ولكن تم اختبار هذا.لدي مثال عملي فائق البساطة يتيح لك السحب من وإلى الفلاش.إنه أمر فوضوي جدًا لأنني جمعته معًا أثناء استراحة الغداء.

هنا تجريبي

و ال مصدر

الفئة الأساسية مأخوذة مباشرة من الواجهة الخارجية LiveDocs.أضفت MyButton حتى يحتوي الزر على بعض النص.غالبية جافا سكريبت تأتي من نفس مثال LiveDocs.

لقد قمت بتجميع هذا باستخدام mxmlc.

نصائح أخرى

تنصل لم أختبر هذا الرمز على الإطلاق، ولكن الفكرة يجب أن تنجح.كما أن هذا يعالج السحب فقط ل فيلم فلاش.

إليك بعض أكواد Actionscript 3.0 التي تستخدم الواجهة الخارجية فصل.

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>

أود أن أقول أنه من الممكن أن تسقط ل قم بالفلاش إذا اكتشفت أن العنصر قد تم سحبه إلى الجزء الذي يحتوي على عناصر الفلاش، وقمت بتعيين الكائنات المسحوبة بحيث يكون لها مؤشر z أعلى من الفلاش.ثم عندما يتم إسقاطه، يمكنك التحدث إلى Flash باستخدام جافا سكريبت لإخباره بمكان وما تم إسقاطه.

ومع ذلك، فإن الطريقة الأخرى ربما تكون أصعب بكثير، لأنه سيتعين عليك اكتشاف متى يصل الكائن إلى حدود فيلم الفلاش و"تمريره" إلى معالج جافا سكريبت (قم بإنشائه في html، وإخفائه في الفلاش).

ربما يكون السؤال هو معرفة ما إذا كان الأمر يستحق العناء، أو إذا كان بإمكانك تحقيق كل شيء في JS أو Flash؟

انتظر، نقطة التغليف صالحة ولكن الفلاش يمكنه تنفيذ وظائف JS، وSeldaek على حق في أن عنصر HTML الذي يحتوي على مؤشر z أعلى يجب أن يطفو على فيلم الفلاش.لذلك، إذا قمت بكل عمليات معالجة السحب في JS وجعلت الفلاش يقرأ أبعاده الخاصة وموضع المؤشر في التطبيق، فيمكنه الإشارة إلى أساليب JS التي تربط العنصر (العناصر) بالمؤشر حتى (خاصة) عندما يغادر المؤشر حدود تطبيق الفلاش.سيكون مشعرًا جدًا بالرغم من ذلك.

إذا كان الموقع بأكمله عبارة عن ملف فلاش كبير مضمن، فنعم، هذا ممكن.

ولا أعتقد أنه يمكنك تحقيق ذلك بأي طريقة أخرى

غير ممكن في الفلاش - إلا إذا كنت تريد السحب إلى هدف داخل نفس تطبيق الفلاش.

من المحتمل أن يتم ذلك باستخدام تطبيق Java صغير موقّع (ولكن من يريد السير في هذا الطريق؟)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top