Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   jsfl скрипт, пропуск кадров. (http://www.flasher.ru/forum/showthread.php?t=135209)

Nel 18.01.2010 19:44

jsfl скрипт, пропуск кадров.
 
Есть скрипт по выгрузки действий над объектами в 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...


Часовой пояс GMT +4, время: 20:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.