2

DisplayObject に対して相対的にアンカー ポイントを取得します。

例: ここに画像の説明を入力

// HOW GET THIS VALUES IN CODE
    Object height = 90px 
    Object width = 40px 

    anchor point X = 20px 
    anchor point Y = 72px 
//  


    real anchor point X =  anchor point X/Object width = 0.5 
    real anchor point y =  anchor point Y/Object height = 0.8

前もって感謝します

ここに画像の説明を入力

import flash.events.Event;
import fl.motion.*;

run();

var frameID:uint;
var plistText:String;

function run()
{
    plistText = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n";
    processFrame(null);
    this.addEventListener(Event.ENTER_FRAME,processFrame);

}

function processFrame(e:Event)
{
    if (this.currentFrameLabel != null) {
        if (this.currentFrame != 1)
        plistText += "</array>\n";
        frameID = 0;
        plistText += "<key>"+this.currentFrameLabel+"</key>\n<array>\n";
    }
    plistText+="<dict>\n";
    plistText +="<key>FrameID</key>\n<string>"+frameID+"</string>\n"
    frameID++;
    for (var i:uint = 0; i < this.numChildren; i++)
    {
        var currentObject = this.getChildAt(i);
        plistText += "<key>"+currentObject.name+"</key>\n"
        plistText += "<dict>\n"
        plistText += "<key>positionX</key>\n<string>"+currentObject.x+"</string>\n";
        plistText += "<key>positionY</key>\n<string>"+currentObject.y+"</string>\n";
        plistText += "<key>scaleX</key>\n<string>"+currentObject.scaleX+"</string>\n";
        plistText += "<key>scaleY</key>\n<string>"+currentObject.scaleY+"</string>\n";
        plistText += "<key>rotation</key>\n<string>"+currentObject.rotation+"</string>\n";
        plistText += "<key>alpha</key>\n<string>"+currentObject.alpha+"</string>\n";
        plistText += "<key>visible</key>\n<string>"+currentObject.visible+"</string>\n";
        plistText += "</dict>\n"
    }
    plistText+="</dict>\n";
    if (this.currentFrame == totalFrames)
    {
        plistText += "</array>\n</dict>\n</plist>";
        trace(plistText)
        removeEventListener(Event.ENTER_FRAME, processFrame);
        this.stop();
    }
}
4

2 に答える 2

5

getBounds()またはgetRect()呼び出しを介して、オブジェクトのアンカー ポイントを派生させることができます。これを行うには、DisplayObject がステージにアクセスできる必要があります。それ以外の場合は、偽の値getBounds()getRect()返します (テスト済み)。実際には、アンカー ポイントは独自の座標空間内のオブジェクトの (0,0) ポイントに対応するtest.getRect(test)ため、テスト オブジェクトに対して実行すると (-20,-18,40,90) が返されます。Y 座標が下向きに成長することに注意してください。上向きではありません。次に、その長方形の左上のポイントを取得し、それを反転します。ほら、その寸法に対するオブジェクトのアンカーポイントです。

function getAnchorPoint(o:DisplayObject):Point {
    var onStage:Boolean;
    var p:DisplayObject=o.parent;
    onStage=(o.stage!=null);
    if (!onStage) stage.addChild(o);
    var res:Point=new Point();
    var rect:Rectangle=o.getRect(o);
    res.x=-1*rect.x;
    res.y=-1*rect.y;
    if (!onStage) {
        stage.removeChild(o);
        if (p) p.addChild(o);
    }
    return res;
}
于 2013-07-09T04:16:33.240 に答える
2

できません。アンカーはエクスポートされず、*.flaファイルにのみ存在します。

ただし、独自のアンカー システムを実装することはできますが (多くのライブラリがそうであるように)、元の fla にあるものにアクセスすることはできません。

于 2013-07-09T00:59:36.380 に答える