Label flackert

  • Hallo zusammen

    ich habe mehrere Labels (30-35) und 3 progress Bars die ich sekündlich refreshe. Allerdings flackern die Labels ab und zu (nicht jedes mal) was etwas unschön ist.
    Ich weiß nicht was ich noch machen könnte um dieses Problem zu beheben.

    Hab schon das ermitteln der neuen Daten sowie das refreshen der Labels extra gekapselt, so dass beim refresh nichts mehr ermittelt werden muss o.ä. was das flackern schon etwas vermindert hat.

    Hat jemand noch ne Idee?

    Einmal editiert, zuletzt von Milla (5. Mai 2011 um 16:24)

  • Du willst dich durch 2201 Zeilen schlagen?^^

    Ich poste mal nen Teil damit ihr ungefähr ne Vorstellung habt:

    [autoit]

    $dataToSet[0] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $botStatusStatic)
    $dataToSet[1] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic)
    $dataToSet[2] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 2)
    $dataToSet[3] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 7)
    $dataToSet[4] = _stringFormat(ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 9))
    $dataToSet[5] = _stringFormat(ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 11))
    $dataToSet[6] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 16)
    $dataToSet[7] = _stringFormat(ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 18))
    $dataToSet[8] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 20)
    $dataToSet[9] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 22)
    $dataToSet[10] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 24)
    $dataToSet[11] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 26)
    $dataToSet[12] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 28)
    $dataToSet[13] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 30)
    $dataToSet[14] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 32)
    $dataToSet[15] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 34)
    $dataToSet[16] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 36)
    $dataToSet[17] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $labelXStatic + 38)
    $dataToSet[18] = ControlGetText(GUICtrlRead($comboSbotWindows), "", $ptStatic)

    [/autoit]


    Das ist jetzt erstmal nen Teil der Datenermittlung und jetzt das setzen der Labels:

    [autoit]

    GUICtrlSetData($labelBotStatus, $dataToSet[0])
    GUICtrlSetData($labelX, $dataToSet[1])
    GUICtrlSetData($labelY, $dataToSet[2])
    GUICtrlSetData($labelLvl, $dataToSet[3])
    GUICtrlSetData($labelGold, $dataToSet[4])
    GUICtrlSetData($labelSp, $dataToSet[5])
    GUICtrlSetData($labelTotalTime, $dataToSet[6])
    GUICtrlSetData($labelKills, $dataToSet[7])
    GUICtrlSetData($labelXpGained, $dataToSet[8])
    GUICtrlSetData($labelXpMin, $dataToSet[9])
    GUICtrlSetData($labelXPh,$dataToSet[10])
    GUICtrlSetData($labelSpGained, $dataToSet[11])
    GUICtrlSetData($labelSpMin, $dataToSet[12])
    GUICtrlSetData($labelSPh, $dataToSet[13])
    GUICtrlSetData($labelDied,$dataToSet[14])
    GUICtrlSetData($labelDiedSess, $dataToSet[15])
    GUICtrlSetData($labelItemdrops, $dataToSet[16])
    GUICtrlSetData($labelGoldLoop, $dataToSet[17])
    GUICtrlSetData($labelParty, $dataToSet[18])

    [/autoit]

    und NEIN es ist kein bot lediglich ein Programm um mehrere Bots für ein rpg zu verwalten. Bringt also keine Vorteile sondern nur Übersichtlichkeit.

  • Ich würde mir die Daten von $dataToSet in ein temporäres Array schreiben.
    Bevor die Labels dann erneut aktualisiert werden, die neuen Daten mit $aTemp
    vergleichen und nur neu setzn, wenn es wirklich was neues gibt.
    Würde sich vlt. auh anbieten, die Labels in ein Array zu legen. Dann liesse sich das
    bequem in einer FOR Schleife erledigen.

  • Habs jetzt alles so umgestellt dass es nur bei Änderung refresht wird. Ist dadurch zwar noch weniger geworden aber immer noch nicht ganz weg.

    Nehm mal an dass AutoIt dafür nicht performant genug ist. Eventuell mal das refreshen in native versuchen mal sehn.

    Einmal editiert, zuletzt von Milla (5. Mai 2011 um 15:50)