Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 动作脚本3显然我无法访问movieclip_Actionscript 3_Movieclip_Zooming - Fatal编程技术网

Actionscript 3 动作脚本3显然我无法访问movieclip

Actionscript 3 动作脚本3显然我无法访问movieclip,actionscript-3,movieclip,zooming,Actionscript 3,Movieclip,Zooming,我创建了一个缩放功能,但是当我尝试缩放bg\u图像时,什么都没有发生。就像我无法访问它的属性一样。有人知道为什么吗?:) 泰 主类 package { import flash.display.MovieClip; import flash.utils.Dictionary; import flash.events.MouseEvent; import flash.display.Sprite; import flash.text.TextField; import fl.controls.B

我创建了一个缩放功能,但是当我尝试缩放
bg\u图像时,什么都没有发生。就像我无法访问它的属性一样。有人知道为什么吗?:)

主类

package 
{
import flash.display.MovieClip;
import flash.utils.Dictionary;
import flash.events.MouseEvent;
import flash.display.Sprite;
import flash.text.TextField;
import fl.controls.Button;
import fl.controls.List;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event;

import flash.display.Shape;
import fl.transitions.Fly;
import fl.motion.MatrixTransformer;
import flash.events.KeyboardEvent;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.ui.Mouse;

public class Main extends Sprite
{
    // Zoom

    public static var scale:Number = 1;

    public var spImage:Sprite;
    public var mat:Matrix;
    public var mcIn:MovieClip;
    public var mcOut:MovieClip;
    public var boardWidth:int = 980;
    public var boardHeight:int = 661;

    public var boardMask:Shape;

    public var externalCenter:Point;
    public var internalCenter:Point;

    public const scaleFactor:Number = 0.8;

    public var minScale:Number = 0.25;
    public var maxScale:Number = 10.0;

    // ------------------------

    // Grafikk
    public var bg_image:Sprite;
    //-------------------------------



    //-----------------------------------------------

    public var routeArray:Array;

    public var startList:List = new List();
    public var sluttList:List = new List();

    public var S_Norway:Dictionary = new Dictionary();
    public var S_Australia:Dictionary = new Dictionary();
    public var S_China:Dictionary = new Dictionary();
    public var S_South_Africa:Dictionary = new Dictionary();
    public var S_Brazil:Dictionary = new Dictionary();
    public var S_USA:Dictionary = new Dictionary();
    public var S_France:Dictionary = new Dictionary();

    // ------------------------------------------------------

    public static var airportDict:Dictionary = new Dictionary();


    public function Main()
    {

        addEventListener(Event.ADDED_TO_STAGE, init);

        // ---------------------------------



    }

    public function init(e:Event):void
    {
        bg_image = new Image(0, 0);
        this.addChild(bg_image);

        bg_image.addEventListener(MouseEvent.CLICK, mouseCoordinates);

        removeEventListener(Event.ADDED_TO_STAGE, init);

        // Zoom

        this.graphics.beginFill(0xB6DCF4);
        this.graphics.drawRect(0,0,boardWidth,boardHeight);
        this.graphics.endFill();

        spImage = new Sprite();
        this.addChild(spImage);

        boardMask = new Shape();
        boardMask.graphics.beginFill(0xDDDDDD);
        boardMask.graphics.drawRect(0,0,boardWidth,boardHeight);
        boardMask.graphics.endFill();
        boardMask.x = 0;
        boardMask.y = 0;
        this.addChild(boardMask);
        spImage.mask = boardMask;

        minScale = boardWidth / bg_image.width;

        mcIn = new InCursorClip();
        mcOut = new OutCursorClip();

        bg_image.addChild(mcIn);
        bg_image.addChild(mcOut);

        bg_image.scaleX = minScale;
        bg_image.scaleY = minScale;

        spImage.addChild(bg_image);
        spImage.addChild(mcIn);
        spImage.addChild(mcOut);

        spImage.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);
        stage.addEventListener(MouseEvent.MOUSE_UP, stopDragging);

        spImage.addEventListener(MouseEvent.CLICK, zoom);

        stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler);
        stage.addEventListener(KeyboardEvent.KEY_UP, keyHandler);

        S_USA["x"] = 180.7;
        S_USA["y"] = 149.9;
        S_USA["bynavn"] = "New York";

        S_Norway["x"] = 423.7;
        S_Norway["y"] = 76.4;
        S_Norway["bynavn"] = "Oslo";

        S_South_Africa["x"] = -26;
        S_South_Africa["y"] = 146;
        S_South_Africa["bynavn"] = "Cape Town";

        S_Brazil["x"] = 226;
        S_Brazil["y"] = 431.95;
        S_Brazil["bynavn"] = "Rio de Janeiro";

        S_France["x"] = 459.1;
        S_France["y"] = 403.9;
        S_France["bynavn"] = "Paris";

        S_China["x"] = 716.2;
        S_China["y"] = 143.3;
        S_China["bynavn"] = "Beijing";

        S_Australia["x"] = 809.35;
        S_Australia["y"] = 414.95;
        S_Australia["bynavn"] = "Sydney";

        // ----------------------------------------------------

        airportDict["USA"] = S_USA;
        airportDict["Norway"] = S_Norway;
        airportDict["South Africa"] = S_South_Africa;
        airportDict["Brazil"] = S_Brazil;
        airportDict["France"] = S_France;
        airportDict["China"] = S_China;
        airportDict["Australia"] = S_Australia;

        for (var k:Object in airportDict)
        {
            var value = airportDict[k];
            var key = k;
            startList.addItem({label:key, data:key});
            sluttList.addItem({label:key, data:key});
            var airport:Airport = new Airport(key,airportDict[key]["bynavn"]);
            airport.koordinater(airportDict[key]["x"], airportDict[key]["y"]);
            bg_image.addChild(airport);
        }

        // --------------------------------------------
        // --------------------------------------------
        // -----------------------------------------------


    }

    private function startDragging(mev:MouseEvent):void
    {
        spImage.startDrag();
    }

    private function stopDragging(mev:MouseEvent):void
    {
        spImage.stopDrag();
    }


    private function zoom(mev:MouseEvent):void
    {
        if ((!mev.shiftKey)&&(!mev.ctrlKey))
        {
            return;
        }
        if ((mev.shiftKey)&&(mev.ctrlKey))
        {
            return;
        }

        externalCenter = new Point(spImage.mouseX,spImage.mouseY);
        internalCenter = new Point(bg_image.mouseX,bg_image.mouseY);

        if (mev.shiftKey)
        {
            bg_image.scaleX = Math.max(scaleFactor*bg_image.scaleX, minScale);
            bg_image.scaleY = Math.max(scaleFactor*bg_image.scaleY, minScale);
        }
        if (mev.ctrlKey)
        {
            trace("Minscale: ", maxScale)
            trace("Returned: ", 1/scaleFactor*bg_image.scaleY)
            bg_image.scaleX = Math.min(1/scaleFactor*bg_image.scaleX, maxScale);
            bg_image.scaleY = Math.min(1/scaleFactor*bg_image.scaleY, maxScale);
        }

        mat = this.transform.matrix.clone();

        MatrixTransformer.matchInternalPointWithExternal(mat,internalCenter,externalCenter);

        bg_image.transform.matrix = mat;
    }

    private function keyHandler(ke:KeyboardEvent):void
    {

        mcIn.x = spImage.mouseX;
        mcIn.y = spImage.mouseY;
        mcOut.x = spImage.mouseX;
        mcOut.y = spImage.mouseY;

        mcIn.visible = ke.ctrlKey;
        mcOut.visible = ke.shiftKey;

        if (ke.ctrlKey || ke.shiftKey)
        {
            Mouse.hide();
        }
        else
        {
            Mouse.show();
        }
    }

    private function reise(evt:MouseEvent):void
    {
        var new_flight:Flight = new Flight(airportDict[startList.selectedItem.label]["x"],airportDict[startList.selectedItem.label]["y"],airportDict[sluttList.selectedItem.label]["x"],airportDict[sluttList.selectedItem.label]["y"]);
        bg_image.addChild(new_flight);
    }

    private function mouseCoordinates(event: MouseEvent):void
    {
        // these are the x and y relative to the object
        var localMouseX:Number = bg_image.mouseX;
        var localMouseY:Number = bg_image.mouseY;
        trace("Local coordinates: ", localMouseX, localMouseY);

        // these are the x and y relative to the whole stage
        var stageMouseX:Number = event.stageX;
        var stageMouseY:Number = event.stageY;
        trace("Global coordinates: ", stageMouseX, stageMouseY);
    }
}
}

图像类别:

package  {
import flash.display.Sprite;
import flash.display.MovieClip;


public class Image extends Sprite
    {

    public function Image(y_:Number, x_:Number) 
    {
        this.y = y_
        this.x = x_
    }

}
}您没有声明
minScale
,也没有声明
maxScale

bg\u image
应声明为
Sprite
,否则
编译器错误:隐式强制…
`

由于您的图像非常小,您可能希望将您的听众添加到舞台上,而不是图像,因此很难在如此小的图像中单击

另外,这里是您使用
鼠标滚轮
而不是单击+Ctrl/Shift的示例


对不起,我只是忘了在我的帖子中包含这部分代码。minScale和maxScale没有被声明当然不是问题。我现在尝试将bg_图像更改为精灵,这并没有产生任何影响。好的,图像是否开始缩小?执行此操作时:
bg_image.scaleX=minScale;bg_image.scaleY=minScale在init上?是:)结果证明我并没有真正复制所有相关的代码。@user3257755,我已经复制粘贴了您的代码并按预期工作,单击+Ctrl>放大,单击+Shift>缩小。这很奇怪。。。我将发布我的全部代码。也许你可以指出错误
public var bg_image:Sprite;
stage.addEventListener(MouseEvent.MOUSE_WHEEL, zoom);

private function zoom(mev:MouseEvent):void
{
    mev.delta > 0 ?
        bg_image.scaleX = bg_image.scaleY = Math.max(scaleFactor * bg_image.scaleX, minScale) :
        bg_image.scaleX = bg_image.scaleY = Math.min(1/scaleFactor * bg_image.scaleX, maxScale) ;   
}