2010-12-10 9 views
0

Flash CS5/AS3プロジェクトに複数の場所で使用するコンテンツスクロールを用意しています。コールごとに異なるFlash AS3コーディング変数が初期設定される

以下は、スクロールしたテキストコンポーネントのAS3コードです。 'compnentsettings.xml'は、どのような.htmlファイルを呼び出すかを定義します。

今のところ私はscrollerが1つの場所でしか動作しません。私はそれを複製することができますが、もちろん、同じデータをロードします。

は、私は別のcompnentSettings.xmlファイル

をロードするためにscrolledTextComponent.as(下記)からsettingsComponent機能を変更する必要が信じている 私は変数__xmlSettingsPathは、すべての呼び出しのためのさまざまな初期化が必要になりますし、私はどのように行うには考えている

この。助けてください!

package com 
{ 
    import flash.display.*; 
    import flash.events.TimerEvent; 
    import flash.net.URLRequest; 
    import flash.net.URLLoader; 
    import flash.text.StyleSheet; 
    import flash.utils.Timer; 
    import flash.events.MouseEvent; 
    import flash.text.TextField; 
    import flash.events.*; 

    import com.LoadXmlPlayerClass; 

    public class scrolledTextComponent extends MovieClip 
    { 

     // component variables 
     private var __xmlSettingsPath:String = "componetsettings.xml"; 
     private var _sheet:StyleSheet = new StyleSheet();  
     public var _loadSettingsXml:LoadXmlPlayerClass = new LoadXmlPlayerClass(); 
     private var _settingsXmlTimmer:Timer = new Timer(250);  

     public var _loadXml:LoadXmlPlayerClass = new LoadXmlPlayerClass(); 
     private var _newsTimmer:Timer = new Timer(250);  


     //private var _loaderIcon_mc:LoaderMC = new LoaderMC(); //used to show xml loading state 
     private var _urlCSS:URLRequest = new URLRequest(); 
     private var _loaderCSS = new URLLoader(); 

     private var _urlHTML:URLRequest = new URLRequest(); 
     private var _loaderHTML = new URLLoader(); 


     //text 
     private var _txt:TextField = new TextField(); 
     private var _MyScrollBar:MyScrollBar = new MyScrollBar(); 

     public function scrolledTextComponent() 
     { 
      loaderIcon_mc.visible=true; 
      readSettingsXml(); 

     } 



     /* Other Functions */ 
     private function readSettingsXml() :void 
     { 
      if(__xmlSettingsPath != '') 
      { 
       //loaderIcon_mc.visible=false; 
       //read XML file 
       _loadSettingsXml.loadFile(__xmlSettingsPath); 
       _settingsXmlTimmer.addEventListener(TimerEvent.TIMER,settingsComponent); 
       _settingsXmlTimmer.start(); 
      } 

     } 

     //timmer 
     private function settingsComponent(event:TimerEvent):void { 
      //_settingsXmlTimmer.stop(); 
      //trace ("initial is running: "+_settingsXmlTimmer.running); 
      if (_loadSettingsXml.isxmlread && _settingsXmlTimmer.running) { 
       _settingsXmlTimmer.stop(); 
       //trace ("after is running: "+_settingsXmlTimmer.running); 

       loaderIcon_mc.visible=true; 
       loaderIcon_mc.x=(_loadSettingsXml._myXml.record[0].scrollComponentWidth-loaderIcon_mc.width)/2; 
       loaderIcon_mc.y=(_loadSettingsXml._myXml.record[0].scrollComponentHeight-loaderIcon_mc.height)/2; 



       _txt.width = _loadSettingsXml._myXml.record[0].scrollComponentWidth-40; 
       _txt.height = _loadSettingsXml._myXml.record[0].scrollComponentHeight; 
       _txt.mouseWheelEnabled=true; 
       _txt.multiline = true; 
       _txt.wordWrap = true; 
       _txt.selectable = true; 
       _txt.condenseWhite=true; 
       _txt.border=false; 

       _txt.x=0; 
       _txt.y=0; 



       if (_loadSettingsXml._myXml.record[0].cssStylesPath!='') { 
        _urlCSS=new URLRequest(_loadSettingsXml._myXml.record[0].cssStylesPath); 
        _loaderCSS.addEventListener(Event.COMPLETE, onCSSFileLoaded); 
        _loaderCSS.load(_urlCSS); 
       }    

      } 
     }    


     private function readHTML() :void 
     { 
      if (_loadSettingsXml._myXml.record[0].htmlPath!='') { 
       _urlHTML=new URLRequest(_loadSettingsXml._myXml.record[0].htmlPath); 
       _loaderHTML.addEventListener(Event.COMPLETE, onHTMLFileLoaded); 
       _loaderHTML.load(_urlHTML); 
      } 
     } 


     private function addHTMLandScroll() :void 
     { 
      addChild(_txt); 
      if (_txt.height<_txt.textHeight) { 
       _MyScrollBar.x=_txt.x+_txt.width+20; 
       _MyScrollBar.y=_txt.y+14; 
       _MyScrollBar._height=_txt.height-28; 
       _MyScrollBar._txt=_txt; 
       _MyScrollBar.scrollable_area_mc.height=_txt.height-28; 
       _MyScrollBar.scrollDownButton.y=_txt.height-14; 
       _MyScrollBar.initPublicVars(); 
       addChild(_MyScrollBar); 
      }   
     }  


     private function onCSSFileLoaded(event:Event):void { 
      _sheet.parseCSS(_loaderCSS.data); 
      //_timer_txt.styleSheet = sheet; 
      _txt.styleSheet = _sheet; 
      readHTML(); 
     }  

     private function onHTMLFileLoaded(event:Event):void { 
      _txt.htmlText = _loaderHTML.data; 
      loaderIcon_mc.visible=false; 
      addHTMLandScroll(); 
     }   


    } 

} 

これについてのアドバイスはありますか?私はこれでちょっと新しくなりました..

答えて

0

あなたが欲しいものを得ようとしたら、__xmlSettingsPathはすべてのインスタンス、儀式のクラスの外から設定することを望みますか?

変数を最初に初期化しないでください。そうでない場合は、使用されている他の関数でチェックが行われるので空の文字列に設定することをお勧めします。

private var __xmlSettingsPath:String = ""; 

変数を受け入れるようにコンストラクタを変更します。

public function scrolledTextComponent (XmlPath:String) 
    { 
     __xmlSettingsPath:String = XmlPath; 

     loaderIcon_mc.visible=true; 
     readSettingsXml();  
    } 

だから基本的には上記の2つの変更を加える必要があり&私はコードで十分に見ていないとして、他の問題がない希望

new scrolledTextComponent(XmlPathforThisInstance) 

としてそれを呼び出すコンポーネントクラスを呼び出し中。


編集:

異なるインスタンスを呼び出すには、差分オブジェクトを割り当てるには、変数を宣言することがあります。

するvar FirstInstance:scrolledTextComponent =新しいscrolledTextComponent(FirstXmlPath)

するvar ThirdInstance:scrolledTextComponent =新しいscrolledTextComponent(ThirdXmlPath)

するvar FifthInstance:scrolledTextComponent =新しいscrolledTextComponent(FifthXmlPath)

.... so on

+0

お返事ありがとうございます。私は最初の部分を理解していますが、どのように/私は2番目、3番目、4番目..スクロールされたテキストコンポーネントを呼び出しますか? – AlxSTi

+0

編集を見てください。 – loxxy

関連する問題