Nel
18.01.2010, 19:44
Есть скрипт по выгрузки действий над объектами в fla файле
на файлах длиной меньше 70 кадров все ок
как только эта цифра проходит порог скажем файл в 100 кадров то 1-10-20 кадров будет пропущено, каждый раз эфект разный тоест ьне повторяеться, и чем быстрее машина тем больше скрипт хаваает кадров :) на ноуте порог в 40 кадров на домашнем пк 100 на рабочем 70 :)
код документирован более менее чем полностью )
fl.showIdleMessage(false);
Main();
function Main() {
var tl = fl.getDocumentDOM().getTimeline();
var logFile = "file:///compile_log.txt";
FLfile.remove( logFile );
FLfile.write(logFile,"<?xml version=\"1.0\"?>", "append" );
FLfile.write(logFile,"\n\n<ParticleAnimation>", "append" );
/// главный тайм лайн
for (var l = 0; l < tl.layerCount; l++)
{
var layer = tl.layers[l];
/// если не видин слой
if(!layer.visible)
continue;
FLfile.write(logFile,"\n\t<Layer id=\"" + l + "\">", "append" );
for (var f = 0; f < tl.frameCount; f++) {
frame = tl.layers[l].frames[f];
if (frame) {
for(var e = 0; e < frame.elements.length; e++ ) {
elem = frame.elements[e];
if(!elem.libraryItem)
continue;
var name = elem.libraryItem.name;
if(elem.instanceType == "symbol")
{
compilationMovieClip( name, elem.x, elem.y, f, logFile );
}
else
{
/// здесь надо что то вставить
WriteTOFileMovieClip( logFile, elem, elem.x, elem.y, f );
WriteToFileImage( logFile, elem, 0, 0, f );
FLfile.write(logFile,"\n\t\t</MovieClip>", "append" );
}
fl.trace("Frame := " + f + " -------------------------------------");
}
}
}
FLfile.write(logFile,"\n\t</Layer>", "append" );
}
FLfile.write(logFile,"\n\n</ParticleAnimation>", "append" );
}
function compilationMovieClip( name, x, y, Indexframe, logFile )
{
var document = fl.getDocumentDOM();
document.library.editItem( name );
SpecialMain( x, y, Indexframe, logFile );
document.exitEditMode();
}
function SpecialMain( x, y, IndexFrame, logFile )
{
var tl = fl.getDocumentDOM().getTimeline();
for (var l = 0; l < tl.layerCount; l++)
{
var layer = tl.layers[l];
/// если не видин слой
if(!layer.visible)
continue;
/// мини тест
frame = tl.layers[l].frames[ IndexFrame % tl.frameCount ]
if (frame)
{
for(var e = 0; e < frame.elements.length; e++ )
{
elem = frame.elements[e];
if(!elem.libraryItem )
continue;
//var transPoint = elem.getTransformationPoint();
//fl.trace("x := " + transPoint.x + " y := " + transPoint.y + " xt := " + elem.transformX + " y := " + elem.transformY );
var _x = elem.x + x;
var _y = elem.y + y;
if(elem.instanceType == "symbol")
{
//fl.trace("1");
WriteTOFileMovieClip( logFile, elem, _x, _y, IndexFrame );
compilationMovieClip2( elem.libraryItem.name, _x, _y, IndexFrame, logFile );
FLfile.write(logFile,"\n\t\t</MovieClip>", "append" );
}
else
{
WriteTOFileMovieClip( logFile, elem, _x, _y, IndexFrame );
WriteToFileImage( logFile, elem, 0, 0, IndexFrame );
FLfile.write(logFile,"\n\t\t</MovieClip>", "append" );
fl.trace("name := " + elem.libraryItem.name );
//fl.trace("3");
}
}
}
}
}
function WriteTOFileMovieClip( logFile, elem, _x, _y, frame )
{
var mBlendMode = 0;
var mRed = 255;
var mGreen = 255;
var mBlue = 255;
var mAlpha = 255;
if(elem.blendMode == "overlay")
mBlendMode = 1;
else
mBlendMode = 0;
fl.trace("ALPHA := " + elem.colorAlphaPercent );
fl.trace("RED := " + elem.colorRedPercent );
fl.trace("GREEN := " + elem.colorGreenPercent );
fl.trace("BLUE := " + elem.colorBluePercent );
mAlpha = ( 255 / 100) * elem.colorAlphaPercent;
mRed = ( 255 / 100) * elem.colorRedPercent;
mGreen = ( 255 / 100) * elem.colorGreenPercent;
mBlue = ( 255 / 100) * elem.colorBluePercent;
var transPoint = elem.getTransformationPoint();
fl.trace("tx := " + elem.transformX + " ty := " + elem.transformY );
FLfile.write(logFile,"\n\t\t<MovieClip ", "append" );
FLfile.write(logFile," frame=\"" + frame + "\"", "append" );
FLfile.write(logFile," x=\"" + (_x) + "\"", "append" );
FLfile.write(logFile," y=\"" + (_y) + "\"", "append" );
FLfile.write(logFile," centerX=\"" + transPoint.x + "\"", "append" );
FLfile.write(logFile," centerY=\"" + transPoint.y + "\"", "append" );
FLfile.write(logFile," scalex=\"" + elem.scaleX + "\"", "append" );
FLfile.write(logFile," scaley=\"" + elem.scaleY + "\"", "append" );
FLfile.write(logFile," rotation=\"" + elem.rotation + "\"", "append" );
FLfile.write(logFile," alpha=\"" + mAlpha + "\"", "append" );
FLfile.write(logFile," blendMode=\"" + mBlendMode + "\"", "append" );
FLfile.write(logFile," red=\"" + mRed + "\"", "append" );
FLfile.write(logFile," green=\"" + mGreen + "\"", "append" );
FLfile.write(logFile," blue=\"" + mBlue + "\"", "append" );
FLfile.write(logFile," >", "append" );
}
function WriteToFileImage( logFile, elem, _x, _y, frame )
{
fl.trace("MovieClip name := " + elem.libraryItem.name + " x:= " + (_x) + " y:= " + (_y) );
fl.trace("tx := " + elem.transformX + " ty := " + elem.transformY );
fl.trace(" x := " + elem.x + " y := " + elem.y );
var transPoint = elem.getTransformationPoint();
FLfile.write(logFile,"\n\t\t\t<Element ", "append" );
FLfile.write(logFile," name=\"" + elem.libraryItem.name + "\"", "append" );
FLfile.write(logFile," x=\"" + (_x) + "\"", "append" );
FLfile.write(logFile," y=\"" + (_y) + "\"", "append" );
FLfile.write(logFile," centerX=\"" + elem.x + "\"", "append" );
FLfile.write(logFile," centerY=\"" + elem.y + "\"", "append" );
FLfile.write(logFile," />", "append" );
}
function compilationMovieClip2( name, x, y, IndexFrame, logFile )
{
var document = fl.getDocumentDOM();
document.library.editItem( name );
var tl = fl.getDocumentDOM().getTimeline();
for (var l = 0; l < tl.layerCount; l++)
{
var layer = tl.layers[l];
/// если не видин слой
if(!layer.visible)
continue;
/// мини тест
frame = tl.layers[l].frames[ IndexFrame % tl.frameCount ]
if (frame)
{
for(var e = 0; e < frame.elements.length; e++ )
{
elem = frame.elements[e];
if(!elem.libraryItem )
continue;
var _x = elem.x + x;
var _y = elem.y + y;
if(elem.instanceType == "symbol")
{
fl.trace("1");
WriteTOFileMovieClip( logFile, elem, _x, _y, IndexFrame );
compilationMovieClip2( elem.libraryItem.name, _x, _y, IndexFrame, logFile );
FLfile.write(logFile,"\n\t\t</MovieClip>", "append" );
}
else
{
WriteToFileImage( logFile, elem, _x, _y, IndexFrame );
fl.trace("name := " + elem.libraryItem.name );
fl.trace("3");
}
}
}
}
document.exitEditMode();
}
хочеься услышать мнение людей которые не по наслышки знаю jsfl и моглибы укзать что так перегружает скрипт что заставляет ide пропускать кадры...
запускаю через run command...
на файлах длиной меньше 70 кадров все ок
как только эта цифра проходит порог скажем файл в 100 кадров то 1-10-20 кадров будет пропущено, каждый раз эфект разный тоест ьне повторяеться, и чем быстрее машина тем больше скрипт хаваает кадров :) на ноуте порог в 40 кадров на домашнем пк 100 на рабочем 70 :)
код документирован более менее чем полностью )
fl.showIdleMessage(false);
Main();
function Main() {
var tl = fl.getDocumentDOM().getTimeline();
var logFile = "file:///compile_log.txt";
FLfile.remove( logFile );
FLfile.write(logFile,"<?xml version=\"1.0\"?>", "append" );
FLfile.write(logFile,"\n\n<ParticleAnimation>", "append" );
/// главный тайм лайн
for (var l = 0; l < tl.layerCount; l++)
{
var layer = tl.layers[l];
/// если не видин слой
if(!layer.visible)
continue;
FLfile.write(logFile,"\n\t<Layer id=\"" + l + "\">", "append" );
for (var f = 0; f < tl.frameCount; f++) {
frame = tl.layers[l].frames[f];
if (frame) {
for(var e = 0; e < frame.elements.length; e++ ) {
elem = frame.elements[e];
if(!elem.libraryItem)
continue;
var name = elem.libraryItem.name;
if(elem.instanceType == "symbol")
{
compilationMovieClip( name, elem.x, elem.y, f, logFile );
}
else
{
/// здесь надо что то вставить
WriteTOFileMovieClip( logFile, elem, elem.x, elem.y, f );
WriteToFileImage( logFile, elem, 0, 0, f );
FLfile.write(logFile,"\n\t\t</MovieClip>", "append" );
}
fl.trace("Frame := " + f + " -------------------------------------");
}
}
}
FLfile.write(logFile,"\n\t</Layer>", "append" );
}
FLfile.write(logFile,"\n\n</ParticleAnimation>", "append" );
}
function compilationMovieClip( name, x, y, Indexframe, logFile )
{
var document = fl.getDocumentDOM();
document.library.editItem( name );
SpecialMain( x, y, Indexframe, logFile );
document.exitEditMode();
}
function SpecialMain( x, y, IndexFrame, logFile )
{
var tl = fl.getDocumentDOM().getTimeline();
for (var l = 0; l < tl.layerCount; l++)
{
var layer = tl.layers[l];
/// если не видин слой
if(!layer.visible)
continue;
/// мини тест
frame = tl.layers[l].frames[ IndexFrame % tl.frameCount ]
if (frame)
{
for(var e = 0; e < frame.elements.length; e++ )
{
elem = frame.elements[e];
if(!elem.libraryItem )
continue;
//var transPoint = elem.getTransformationPoint();
//fl.trace("x := " + transPoint.x + " y := " + transPoint.y + " xt := " + elem.transformX + " y := " + elem.transformY );
var _x = elem.x + x;
var _y = elem.y + y;
if(elem.instanceType == "symbol")
{
//fl.trace("1");
WriteTOFileMovieClip( logFile, elem, _x, _y, IndexFrame );
compilationMovieClip2( elem.libraryItem.name, _x, _y, IndexFrame, logFile );
FLfile.write(logFile,"\n\t\t</MovieClip>", "append" );
}
else
{
WriteTOFileMovieClip( logFile, elem, _x, _y, IndexFrame );
WriteToFileImage( logFile, elem, 0, 0, IndexFrame );
FLfile.write(logFile,"\n\t\t</MovieClip>", "append" );
fl.trace("name := " + elem.libraryItem.name );
//fl.trace("3");
}
}
}
}
}
function WriteTOFileMovieClip( logFile, elem, _x, _y, frame )
{
var mBlendMode = 0;
var mRed = 255;
var mGreen = 255;
var mBlue = 255;
var mAlpha = 255;
if(elem.blendMode == "overlay")
mBlendMode = 1;
else
mBlendMode = 0;
fl.trace("ALPHA := " + elem.colorAlphaPercent );
fl.trace("RED := " + elem.colorRedPercent );
fl.trace("GREEN := " + elem.colorGreenPercent );
fl.trace("BLUE := " + elem.colorBluePercent );
mAlpha = ( 255 / 100) * elem.colorAlphaPercent;
mRed = ( 255 / 100) * elem.colorRedPercent;
mGreen = ( 255 / 100) * elem.colorGreenPercent;
mBlue = ( 255 / 100) * elem.colorBluePercent;
var transPoint = elem.getTransformationPoint();
fl.trace("tx := " + elem.transformX + " ty := " + elem.transformY );
FLfile.write(logFile,"\n\t\t<MovieClip ", "append" );
FLfile.write(logFile," frame=\"" + frame + "\"", "append" );
FLfile.write(logFile," x=\"" + (_x) + "\"", "append" );
FLfile.write(logFile," y=\"" + (_y) + "\"", "append" );
FLfile.write(logFile," centerX=\"" + transPoint.x + "\"", "append" );
FLfile.write(logFile," centerY=\"" + transPoint.y + "\"", "append" );
FLfile.write(logFile," scalex=\"" + elem.scaleX + "\"", "append" );
FLfile.write(logFile," scaley=\"" + elem.scaleY + "\"", "append" );
FLfile.write(logFile," rotation=\"" + elem.rotation + "\"", "append" );
FLfile.write(logFile," alpha=\"" + mAlpha + "\"", "append" );
FLfile.write(logFile," blendMode=\"" + mBlendMode + "\"", "append" );
FLfile.write(logFile," red=\"" + mRed + "\"", "append" );
FLfile.write(logFile," green=\"" + mGreen + "\"", "append" );
FLfile.write(logFile," blue=\"" + mBlue + "\"", "append" );
FLfile.write(logFile," >", "append" );
}
function WriteToFileImage( logFile, elem, _x, _y, frame )
{
fl.trace("MovieClip name := " + elem.libraryItem.name + " x:= " + (_x) + " y:= " + (_y) );
fl.trace("tx := " + elem.transformX + " ty := " + elem.transformY );
fl.trace(" x := " + elem.x + " y := " + elem.y );
var transPoint = elem.getTransformationPoint();
FLfile.write(logFile,"\n\t\t\t<Element ", "append" );
FLfile.write(logFile," name=\"" + elem.libraryItem.name + "\"", "append" );
FLfile.write(logFile," x=\"" + (_x) + "\"", "append" );
FLfile.write(logFile," y=\"" + (_y) + "\"", "append" );
FLfile.write(logFile," centerX=\"" + elem.x + "\"", "append" );
FLfile.write(logFile," centerY=\"" + elem.y + "\"", "append" );
FLfile.write(logFile," />", "append" );
}
function compilationMovieClip2( name, x, y, IndexFrame, logFile )
{
var document = fl.getDocumentDOM();
document.library.editItem( name );
var tl = fl.getDocumentDOM().getTimeline();
for (var l = 0; l < tl.layerCount; l++)
{
var layer = tl.layers[l];
/// если не видин слой
if(!layer.visible)
continue;
/// мини тест
frame = tl.layers[l].frames[ IndexFrame % tl.frameCount ]
if (frame)
{
for(var e = 0; e < frame.elements.length; e++ )
{
elem = frame.elements[e];
if(!elem.libraryItem )
continue;
var _x = elem.x + x;
var _y = elem.y + y;
if(elem.instanceType == "symbol")
{
fl.trace("1");
WriteTOFileMovieClip( logFile, elem, _x, _y, IndexFrame );
compilationMovieClip2( elem.libraryItem.name, _x, _y, IndexFrame, logFile );
FLfile.write(logFile,"\n\t\t</MovieClip>", "append" );
}
else
{
WriteToFileImage( logFile, elem, _x, _y, IndexFrame );
fl.trace("name := " + elem.libraryItem.name );
fl.trace("3");
}
}
}
}
document.exitEditMode();
}
хочеься услышать мнение людей которые не по наслышки знаю jsfl и моглибы укзать что так перегружает скрипт что заставляет ide пропускать кадры...
запускаю через run command...