الوصول عبر AS3 (للتصدير) تدرج مستطيل تم إنشاؤه في محرر الفلاش

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

سؤال

أحتاج إلى تصدير إعدادات التدرج للمستطيل الذي تم إنشاؤه باستخدام محرر فلاش. فناننا يخلق مستطيل مع التدرج في .fla. هل من الممكن استرداد المعلمات التدرج من .swf أو من مكون إضافي فلاش يمكنني كتابته؟

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

المحلول

كنت بحاجة إلى هذا قبل عامين ، لحسن الحظ ، كتب Tink بالفعل نصًا على تمديد/JSFL: نسخ ملء AS3.

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

document = fl.getDocumentDOM();
selection = document.getSelectionRect();
selection.left != undefined ? useSelection = true : useSelection = false;
useSelection ? fill = document.getCustomFill( "selection" ) : fill = document.getCustomFill( "toolbar" );
fl.outputPanel.clear();
var output = "";
if(fill.style != "noFill"){
    if( fill.style == "solid" )
    {
        if( fill.color.length == 9 )
        {
            a = Math.round( ( parseInt( "0x" + fill.color.substr( 7, 2 ) ) / 255 ) * 100 ) / 100;
            output += "beginFill( 0x" + fill.color.substr( 1, 6 ).toUpperCase() + ", " + a + " );";
        }
        else
        {
            output += "beginFill( 0x" + fill.color.substr( 1, 6 ).toUpperCase() + ", 1 );";
        }

    }
    else if( fill.style == "linearGradient" )
    {
        output += "beginGradientFill( GradientType.LINEAR, ";
    }
    else if( fill.style == "radialGradient" )
    {
        output += "beginGradientFill( GradientType.RADIAL, ";
    }
    if( fill.style != "solid" )
    { 
        c = new Array();
        a = new Array()
        for( i = 0; i < fill.colorArray.length; i++ )
        {
            if(fill.colorArray){
                if( fill.colorArray[ i ].length == 9 )
                {
                    c.push( "0x" + fill.colorArray[ i ].substr( 1, 6 ).toUpperCase() );
                    a.push( Math.round( ( parseInt( "0x" + fill.colorArray[ i ].substr( 7, 2 ) ) / 255 ) * 100 ) / 100 );
                }
                else
                {
                    c.push( "0x" + fill.colorArray[ i ].substr( 1, 6 ).toUpperCase() );
                    a.push( 1 );
                }
            }
        }
        document.setSelectionRect({left:0,top:0,right:0,bottom:0},true);
        document.setSelectionRect(selection,true);
        localX = fill.matrix.tx - selection.left;
        localY = fill.matrix.ty - selection.top
        if(localX < 0 || localY < 0) error = true;
        else error = false;
        if(useSelection) 
        {
            matrix = 'new Matrix(' + fill.matrix.a + ', ' + fill.matrix.b + ', ' + fill.matrix.c + ', ' + fill.matrix.d + ', ' + localX + ', ' + localY + ')';
        }
        else
        {
            matrix = 'new Matrix(' + fill.matrix.a + ', ' + fill.matrix.b + ', ' + fill.matrix.c + ', ' + fill.matrix.d + ', ' + fill.matrix.tx + ', ' + fill.matrix.ty + ')';
        }

        switch(fill.overflow){
            case "Extend":
            spreadMethod = "SpreadMethod.PAD";
            break;
            case "Repeat":
            spreadMethod = "SpreadMethod.REPEAT";
            break;
            case "Reflect":
            spreadMethod = "SpreadMethod.REFLECT";
            break;
        }
        !fill.linearRGB ? interpolationMethod = 'InterpolationMethod.RGB' : interpolationMethod = 'InterpolationMethod.LINEAR_RGB';

        if(fill.focalPoint != 0) output += "[ " + c.join( ", " ) + " ], [ " + a.join( ", " ) + " ], [ " + fill.posArray.join( ", " ) + " ], " + matrix + ", " + spreadMethod + ", " + interpolationMethod + ", " + fill.focalPoint + "); ";
        else output += "[ " + c.join( ", " ) + " ], [ " + a.join( ", " ) + " ], [ " + fill.posArray.join( ", " ) + " ], " + matrix + ", " + spreadMethod + ", " + interpolationMethod + "); ";

    }

    if(error) 
    {
        fl.trace("You have moved your selection!Please re-select the shape and run this command again");
    }else
    {
        fl.clipCopyString( output );
        fl.trace( output );
    }
}else{
    fl.trace( 'No Fill is Selected' );
}

إذا قمت بحفظ هذا كـ نسخ ملء AS3.JSFL في فلاش الأوامر المجلد ، يجب أن يظهر في قائمة الأوامر في IDE.

HTH

نصائح أخرى

ألق نظرة على مكتبة Excelent AS3SWF كتبه كلوز والرز ، من ما يمكنك

تحليل وإنشاء وتعديل ونشر ملفات SWF

.

يتيح لك Sothink Decompiler إلغاء تجميع SWF حتى تحصل على FLA الأصلي. http://www.sothink.com/product/flashDecompiler/ يتم دفعه ولكن لديهم تجربة مجانية.

لا يمكن أن تتذكر ما إذا كان يمكنك التصدير إلى FLA في المحاكمة.

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