문제

FLA, AS 파일 (문서 클래스) 및 JSFL 파일로 작업하고 있습니다. SWF는 WindowSWF 폴더에서 생성됩니다 (예 : $ flash/windowswf)

간단한 WindowSWF가 있고 MMExecute 및 Fl.Runscript를 사용하여 변수를 AS3에서 JSFL로 전달합니다. 그래도 물체를 사용한다면 문제가 발생한다고 상상하지 못했습니다.

내 Windowswf에는 DataGrid가 호출되었습니다 SettingSgrid 다음 열이 있습니다 : [ "접두사", "접미사", "유형"] 그리고 나는 통과하기 위해 트링 settingsgrid.dataprovider.toArray () JSFL 스크립트에.

문제는 반대편에서 정의되지 않은 것으로 나온다는 것입니다. 내가 어떻게 돌아올 수 있는지에 대한 힌트가 있습니까?

짧은 버전 : {prefix : "value", 접미사 : "value", type : "value"}와 같은 객체 배열을 어떻게 전달할 수 있습니까? 단일 객체를 통과하면 배열을 통과하면 오류가 발생합니다.

"Syntax Error: missing ] after element list"

내 기능 호출은 다음과 같습니다.

MMExecute('fl.runScript(fl.configURI + "Commands/LazyGen.jsfl","generate","_",'+ settingsGrid.dataProvider.toArray() +');');

JSFL 파일의 메소드 서명은 다음과 같습니다.

function generate(prefixArg,settingsArg){}
도움이 되었습니까?

해결책

데이터 그리드에서 JSFL로 객체를 전달합니다. 객체에는 다음과 같은 속성이 있습니다.열쇠, 바꿔 놓음 그리고 유형. 다음은 ActionScript에서 JSFL로 전달할 수있는 문자열을 구성하는 데 사용한 기능입니다.

private function dataProviderToString(dataProvider:DataProvider):String{
            var settingsString:String = '[';
            for(var i:int = 0 ; i < dataProvider.length ; i++){
                if(i < (dataProvider.length-1)) settingsString += '{key:"'+ dataProvider.getItemAt(i).key + '",replacement:"' + dataProvider.getItemAt(i).replacement + '",type:"'+ dataProvider.getItemAt(i).type + '"},';
                else settingsString += '{key:"'+ dataProvider.getItemAt(i).key + '",replacement:"' + dataProvider.getItemAt(i).replacement + '",type:"'+ dataProvider.getItemAt(i).type + '"}';
            }
            settingsString += ']';
            return settingsString;
        }

SWF의 설정이 어떻게 든 마술처럼 저장되지 않았다는 것을 알았으므로 로컬 SharedObject를 사용하여 Dataprovider의 설정을 저장했습니다. Flfile을 사용하여 파일을 쓸 수 있었지만 배열을 문자열로 계속 변환하고 싶지 않았습니다. 나는 DataProvider의 배열 (dataprovider.toarray ())를 바이 테레에 쓰고 있는데, 필요할 때 방금 읽고 새로운 Dataprovider의 생성자로 밀어 넣었습니다.

다른 팁

Wind

다음 명령은 도구 모음의 채우기 색상을 검은 색으로 설정합니다. 예를 들어 색상의 값은 색상 피커 구성 요소에서 잡은 다음 JSFL로 전달 될 수 있습니다. 내가하는 일은 행동 스크립트에서 mmexecute를 통해 전송 된 문자열로 변수를 연결하는 것입니다.

var myColor:String = "#000000";
MMExecute("var fill = fl.getDocumentDOM().getCustomFill(\"toolbar\");fill.style= \"solid\";fill.color = \'"+myColor+"\';fl.getDocumentDOM().setCustomFill( fill );");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top