الوصول عبر AS3 (للتصدير) تدرج مستطيل تم إنشاؤه في محرر الفلاش
-
30-09-2019 - |
سؤال
أحتاج إلى تصدير إعدادات التدرج للمستطيل الذي تم إنشاؤه باستخدام محرر فلاش. فناننا يخلق مستطيل مع التدرج في .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 في المحاكمة.