2009-11-27 4 views
0

Я работаю над своим первым приложением Adobe Flex и имею секцию кода, которая работает очень медленно (но она работает правильно!).Как я могу улучшить скорость этого скрипта Adobe Flex?

CC_Output является контрольный текст, все остальные элементы управления флажков (CC, CC_Duration и т.д.)

Любая помощь будет принята с благодарностью!

<mx:Script>     


     private function updateLabel():void { 
      var HPI_Score:Number = 0; 
      if (CC.selected) {CC_Output.text = "CC/HPI - Brief";} 

      if (!CC.selected) { 
       CC_Output.text = "CC/HPI - Inadequate"; 
      } else { 

       if (CC_Duration.selected) {HPI_Score=HPI_Score+1;} 
       if (CC_Location.selected) {HPI_Score=HPI_Score+1;} 
       if (CC_Quality.selected) {HPI_Score=HPI_Score+1;} 
       if (CC_Severity.selected) {HPI_Score=HPI_Score+1;} 
       if (CC_Timing.selected) {HPI_Score=HPI_Score+1;} 
       if (CC_Context.selected) {HPI_Score=HPI_Score+1;} 
       if (CC_Modify.selected) {HPI_Score=HPI_Score+1;} 
       if (CC_Assoc.selected) {HPI_Score=HPI_Score+1;} 
       if (CC_Chronic_Dx.selected) {HPI_Score=HPI_Score+4;} 

       if (HPI_Score > 3) {CC_Output.text = "CC/HPI - Extended";} 
      } 
     } 

</mx:Script> 
<mx:TextArea id="LBL" x="262" y="28" enabled="true" visible="true" width="142"/> 
<mx:CheckBox x="10" y="71" label="Duration" id="CC_Duration" enabled="true" visible="true" click="updateLabel();"/> 
<mx:CheckBox x="10" y="92" label="Location" id="CC_Location" enabled="true" visible="true" click="updateLabel();"/> 
<mx:CheckBox x="10" y="113" label="Quality" id="CC_Quality" enabled="true" visible="true" click="updateLabel();"/> 
<mx:CheckBox x="10" y="134" label="Severity" id="CC_Severity" enabled="true" visible="true" click="updateLabel();"/> 
<mx:CheckBox x="10" y="155" label="Timing" id="CC_Timing" enabled="true" visible="true" click="updateLabel();"/> 
<mx:CheckBox x="10" y="176" label="Context" id="CC_Context" enabled="true" visible="true" click="updateLabel();"/> 
<mx:CheckBox x="10" y="197" label="Modifying Factors" id="CC_Modify" enabled="true" visible="true" click="updateLabel();"/> 
<mx:CheckBox x="10" y="218" label="Assoc Signs/Symptoms" id="CC_Assoc" enabled="true" visible="true" click="updateLabel();"/> 
<mx:CheckBox x="10" y="239" label="Status of 3 Chronic Dx" id="CC_Chronic_Dx" enabled="true" visible="true" click="updateLabel();"/> 
<mx:Label x="10" y="29" text="CC/HPI" fontWeight="bold" id="CC_Output"/> 

+0

Это быстро работает для меня – Amarghosh

ответ

1

В вакууме этот код отлично работает на моем ноутбуке (если я добавлю контроль CC).

Я немного переписал его для быстрого выхода, и это может немного улучшить ситуацию в некоторых случаях.

 private function updateLabel():void 
    { 
     const messageInadequate:String = "CC/HPI - Inadequate"; 
     const messageBrief:String = "CC/HPI - Brief"; 
     const messageExtended:String = "CC/HPI - Extended"; 

     if (!CC.selected) 
     { 
      CC_Output.text = messageInadequate; 
      return; 
     } 

     if (CC_Chronic_Dx.selected) 
     { 
      CC_Output.text = messageExtended; 
      return; 
     } 

     var HPI_Score:int = 0; 

     if (CC_Duration.selected) HPI_Score++; 
     if (CC_Location.selected) HPI_Score++; 
     if (CC_Quality.selected) HPI_Score++; 
     if (CC_Severity.selected) HPI_Score++; 
     if (CC_Timing.selected) HPI_Score++; 
     if (CC_Context.selected) HPI_Score++; 
     if (CC_Modify.selected) HPI_Score++; 
     if (CC_Assoc.selected) HPI_Score++; 

     if (4 > HPI_Score) 
     { 
      CC_Output.text = messageBrief; 
     } 
     else 
     { 
      CC_Output.text = messageExtended; 
     } 
    } 
0

построить один компонент для того, что вы хотите сделать, и импортировать этот компонент в основное приложение и использование. то размер файла будет уменьшаться, а производительность увеличится.

0

Странно, что он работает медленно. В коде ничего особенного не происходит.

Да, код не чист, но это не влияет на производительность здесь.

Попробуйте запустить Flex Profiler и найти возможные узкие места, если они существуют.