سؤال

وأنا تحميل ملف فرنك سويسري الخارجي باستخدام التعليمات البرمجية التالية:

  //add close button
  var reqButton:URLRequest = new URLRequest(btn_close);
  var loader2:Loader = new Loader();
  loader2.load(reqButton);
  addChild(loader2);

  loader2.addEventListener(MouseEvent.CLICK, closeInfoBubble);

  function closeInfoBubble(event:MouseEvent):void
  {
  infoClip.removeMarkerObject(infoBubble)
  infoBubble = null
  }

وهنا هو رمز كامل لهذا الملف. كما

package com.modestmaps
{
        import com.modestmaps.overlays.MarkerClip;

        import flash.display.Graphics;
        import flash.net.URLRequest;
        import flash.display.Loader;
        import flash.display.Shape;
        import flash.display.Sprite;
        import flash.filters.BlurFilter;
        import flash.geom.Matrix;
        import flash.geom.Rectangle;
        import flash.text.TextField;
        //import mx.core.Application;
        import mx.core.Application;
        import flash.events.MouseEvent;


public class InfoBubble extends Sprite
{
    private var btn_close:String = "http://www.cvcmaps.com/SabineParish/media/close_button.swf";
    public var textField:TextField;
    public var background:Shape;
    public var shadow:Shape;
    public var infoClip:MarkerClip;

    protected var map:InfoMap;
    //var infoClip:MarkerClip;
    public var infoBubble:InfoBubble;
    public function InfoBubble(urlLink:String)
    {
        //the name of my markers are set to the links of the swf files in which I want to load into the infobubble
        this.name = urlLink;
        this.mouseEnabled = false;
        this.mouseChildren = true;
        this.buttonMode=false;

        shadow = new Shape();
        shadow.filters = [ new BlurFilter(16, 16) ];
        shadow.transform.matrix = new Matrix(1, 0, -0.5, 0.5, 0, 0);   
        addChild(shadow);

        background = new Shape();
        addChild(background);

        textField = new TextField();
        textField.selectable = false;
        //the infobubble is still sized according to the textField.width and height
        //I don't know how to get the size of the loaded swf
        textField.width = textField.textWidth+432+4;
        textField.height = textField.textHeight+288+4;

        //add main swf
        var request:URLRequest = new URLRequest(urlLink);
        var loader:Loader = new Loader();
        loader.load(request);
        addChild(loader);

        //position the main swf
        //current measurements of swf file w432 h288
        loader.y = -288 - 37;
        loader.x = mx.core.FlexGlobals.topLevelApplication.LBloaderX;

        //add close button
        var reqButton:URLRequest = new URLRequest(btn_close);
        var loader2:Loader = new Loader();
        loader2.load(reqButton);
        addChild(loader2);

        loader2.addEventListener(MouseEvent.CLICK, closeInfoBubble);

        function closeInfoBubble(event:MouseEvent):void
        {
        infoClip.removeMarkerObject(infoBubble)
        infoBubble = null
        }
        //position the closebutton swf
        //current measurements of closebutton swf file w18 h18
        loader2.y = -286 - 37;
        loader2.x = mx.core.FlexGlobals.topLevelApplication.LBloader2X;

        // remember that things in marker clips are positioned with (0,0) at the given location
        textField.y = -textField.height - 35;
        textField.x = -10;

        //I need to find out how to detect the width and height of the swf file loaded into loader2
        //instead of the size of the textField
        var rect:Rectangle = textField.getRect(this);

        // get your graph paper ready, here's a "speech bubble"
        background.graphics.beginFill(0x12345);
        shadow.graphics.beginFill(0x000000);

        for each (var g:Graphics in [ background.graphics, shadow.graphics ] ) {
            g.moveTo(rect.left, rect.top);
            g.lineTo(rect.right, rect.top);
            g.lineTo(rect.right, rect.bottom);
            g.lineTo(rect.left+15, rect.bottom);
            g.lineTo(rect.left+10, rect.bottom+15);
            g.lineTo(rect.left+5, rect.bottom);
            g.lineTo(rect.left, rect.bottom);
            g.lineTo(rect.left, rect.top);
            g.endFill();
        } 
    }
    }
}

والسؤال 1: مرة واحدة محمل بتحميل صورة بلدي، وأنا انقر على ذلك، لا شيء يحدث. أنا من المفترض أن يتم إضافة EventListener إلى محمل أو أي شيء آخر؟

والسؤال 2: كيف يمكنني كشف عن ارتفاع وعرض ملف فرنك سويسري في المحمل؟

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

المحلول

لكشف عندما يتم تحميل فرنك سويسري، واستخدام

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, itemLoaded);

ويمكنك الاستماع إلى أحداث أخرى ولكن لديك لاستخدام محمل في "contentLoaderInfo" الملكية لأن هذا ما يشير الكائن الذي برقيات الأحداث.

وآمل أن يساعد هذا!

نصائح أخرى

1) لا توجد مشاكل من إضافة MouseEvent إلى المحمل، يجب أن يكون هناك في مكان ما مشكلة أخرى هي صورة محملة على نفس المجال؟ وأحد الوالدين يأكل كل حدث أو لديهم مجموعة mouseChildren إلى false؟

2) لأبعاد المحتوى، تحميل مرة واحدة يمكنك القيام به

وloader2.content.width وloader2.content.height

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