commitProperties() ¸Þ¼ÒµåÀÇ ±¸Çö

ÄÄÆÛ³ÍÆ®ÀÇ properties ¿¡ ´ëÇÑ º¯°æÀ» Á¶Á¤ÇÏ·Á¸é ,commitProperties() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì, È­¸é»óÀÇ ÄÄÆÛ³ÍÆ®ÀÇ Ç¥½Ã ¹æ¹ýÀ¸·Î ¿µÇâÀ» ÁÖ´Â properties ¿Í ÇÔ²² »ç¿ëÇÕ´Ï´Ù.

Flex ´Â,invalidateProperties() ¸Þ¼ÒµåÀÇ È£ÃâÀÌ ¹ß»ýÇßÀ» ¶§¿¡,commitProperties() ¸Þ¼ÒµåÀÇ È£ÃâÀ» ½ºÄÉÁÙ¸µ ÇÕ´Ï´Ù. commitProperties() ¸Þ¼Òµå´Â,invalidateProperties() ¸Þ¼ÒµåÀÇ È£Ãâ ÈÄ, ´ÙÀ½¹øÀÇ render À̺¥Æ®ÀÇ ±â°£¿¡ ½ÇÇàµË´Ï´Ù. addChild() ¸Þ¼Òµå¸¦ »ç¿ëÇØ ÄÄÆÛ³ÍÆ®¸¦ ÄÁÅ×À̳ʿ¡ Ãß°¡ÇÏ´Â °æ¿ì,Flex ´Â,invalidateProperties() ¸Þ¼Òµå¸¦ ÀÚµ¿ÀûÀ¸·Î È£ÃâÇÕ´Ï´Ù.

commitProperties() ¸Þ¼ÒµåÀÇ È£ÃâÀº,measure() ¸Þ¼ÒµåÀÇ È£ÃâÀü¿¡ ¹ß»ýÇÕ´Ï´Ù. µû¶ó¼­,measure() ¸Þ¼Òµå°¡ »ç¿ëÇÏ´Â properties ÀÇ °ªÀ» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÄÄÆÛ³ÍÆ®ÀÇ properties ¸¦ Á¤ÀÇÇϱâ À§Çؼ­ »ç¿ëÇÏ´Â ÀüÇüÀûÀÎ ÆÐÅÏÀ¸·Î¼­´Â, ´ÙÀ½ÀÇ ¿¹ÀÇ °°°Ô, getter/setter ¸Þ¼Òµå¸¦ »ç¿ëÇØ properties ¸¦ Á¤ÀÇÇÕ´Ï´Ù.

// alignText  properties ¿ëÀÇ  private  º¯¼ö¸¦ Á¤ÀÇÇÑ´Ù
private var _alignText:String = "right";

// _alignText  properties ÀÇ º¯È­¸¦ ³ªÅ¸³»´Â Ç÷¡±×¸¦ Á¤ÀÇÇÑ´Ù
private var bAlignTextChanged:Boolean = false;

//  properties ÀÇ getter/setter ¸Þ¼Òµå¸¦ Á¤ÀÇÇÑ´Ù        
public function get alignText() :String {
        return _alignText;
}

public function set alignText(t:String) :void {
    _alignText = t;
    bAlignTextChanged = true;

    // Çʿ信 µû¶ó¼­, commitProperties(), measure(), updateDisplayList()
// ¸Þ¼Òµå¸¦ trigger ÇÑ´Ù
// ÀÌ °æ¿ì, ÄÄÆÛ³ÍÆ®¸¦ ÀçÃøÁ¤ÇÒ ÇÊ¿ä´Â ¾ø´Ù invalidateProperties(); invalidateDisplayList(); } // commitProperties() ¸Þ¼Òµå¸¦ ±¸ÇöÇÑ´Ù override protected function commitProperties() :void { super.commitProperties(); // Ç÷¡±×°¡ alignText properties ÀÇ º¯°æÀ» ³ªÅ¸³»°í ÀÖ´ÂÁö È®ÀÎÇÑ´Ù if (bAlignTextChanged) { // Ç÷¡±×¸¦ ¸®¼ÂÆ® ÇÑ´Ù bAlignTextChanged = false; // Á¤·ÄÀÇ º¯°æÀ» ó¸®ÇÑ´Ù } }

ÀÌ ¿¹·Î º¸µµ·Ï(µíÀÌ), setter ¸Þ¼Òµå´Â, properties ¸¦ º¯°æÇØ,invalidateProperties() ¸Þ¼Òµå¿Í invalidateDisplayList() ¸Þ¼Òµå¸¦ È£ÃâÇØ µ¹¾Æ¿É´Ï´Ù. setter ÀÚü´Â, »õ·Î¿î properties Ä¡¸¦ »ç¿ëÇÑ °è»êÀº ÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ¼³°è¿¡ ÀÇÇØ, setter ¸Þ¼Òµå·ÎºÎÅÍ´Â °ð¹Ù·Î µ¹¾Æ¿Í, »õ·Î¿î °ªÀÇ Ã³¸®´Â commitProperties() ¸Þ¼Òµå·Î ÇàÇØÁö°Ô µË´Ï´Ù.

ÄÁÆ®·Ñ³»ÀÇ ÅØ½ºÆ®ÀÇ Á¤·ÄÀ» º¯°æÇصµ, ÄÁÆ®·ÑÀÇ Å©±â´Â ¹Ýµå½Ã ¹Ù²î´Â °ÍÀº ¾Æ´Õ´Ï´Ù. Å©±â°¡ ¹Ù²î´Â °æ¿ì´Â,invalidateSize() ¸Þ¼Òµå¸¦ È£ÃâÇØ measure() ¸Þ¼Òµå¸¦ trigger ÇØ ÁÖ¼¼¿ä.

commitProperties() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â ÁÖµÈ ÀÌÁ¡Àº, ´ÙÀ½°ú °°½À´Ï´Ù.

´ÙÀ½ÀÇ ¿¹¿¡¼­´Â,commitProperties() ¸Þ¼Òµå·Î, 2 °³ÀÇ °ü·ÃÇÏ´Â properties ¸¦ ó¸®ÇÏ´Â ¹æ¹ýÀ» ³ªÅ¸³À´Ï´Ù.

// text  properties ¿ëÀÇ  private  º¯¼ö¸¦ Á¤ÀÇÇÑ´Ù
private var _text:String = "ModalText";
private var bTextChanged:Boolean = false;
        
// getter ¸Þ¼Òµå¸¦ Á¤ÀÇÇÑ´Ù 
public function get text() :String {
        return _text;
}

// setter ¸Þ¼Òµå¸¦ Á¤ÀÇÇØ,  properties ÀÇ º¯°æ½Ã¿¡ invalidateProperties()¸¦
// È£ÃâÇÑ´Ù 
public function set text(t:String) :void {
    _text = t;
    bTextChanged = true;
    invalidateProperties();
    // ÅØ½ºÆ®°¡ º¯°æµÇ¸é, ÄÁÆ®·ÑÀÌ µðÆúÆ® Å©±â¸¦ Àç°è»êÇÑ´Ù
    invalidateSize();
    invalidateDisplayList();
}

// alignText  properties ¿ëÀÇ  private  º¯¼ö¸¦ Á¤ÀÇÇÑ´Ù
private var _alignText:String = "right";
private var bAlignTextChanged:Boolean = false;
        
public function get alignText() :String {
        return _alignText;
}
    
public function set alignText(t:String) :void {
    _alignText = t;
    bAlignTextChanged = true;
    invalidateProperties();
    invalidateDisplayList();
}
    
// commitProperties() ¸Þ¼Òµå¸¦ ±¸ÇöÇÑ´Ù 
override protected function commitProperties() :void {
    super.commitProperties();

    // Ç÷¡±×°¡ ¾çÂÊ ¸ðµÎÀÇ  properties ¿¡ ´ëÇÑ º¯°æÀ» ³ªÅ¸³»°í ÀÖ´ÂÁö È®ÀÎÇÑ´Ù 
    if (bTextChanged && bAlignTextChanged) {
        // Ç÷¡±×¸¦ ¸®¼ÂÆ® ÇÑ´Ù
        bTextChanged = false;
        bAlignTextChanged = false;

        // ¾çÂÊ ¸ðµÎÀÇ  properties °¡ º¯°æµÇ°í ÀÖ´Â °æ¿ìÀÇ Ã³¸®¸¦ ÇÑ´Ù
    }
    
    // Ç÷¡±×°¡ text  properties ÀÇ º¯°æÀ» ³ªÅ¸³»°í ÀÖ´ÂÁö È®ÀÎÇÑ´Ù 
    if (bTextChanged) {
        // Ç÷¡±×¸¦ ¸®¼ÂÆ® ÇÑ´Ù
        bTextChanged = false;

        // ÅØ½ºÆ®ÀÇ º¯°æÀ» ó¸®ÇÑ´Ù
    }

    // Ç÷¡±×°¡ alignText  properties ÀÇ º¯°æÀ» ³ªÅ¸³»°í ÀÖ´ÂÁö È®ÀÎÇÑ´Ù 
    if (bAlignTextChanged) {
        // Ç÷¡±×¸¦ ¸®¼ÂÆ® ÇÑ´Ù
        bAlignTextChanged = false;

        // Á¤·ÄÀÇ º¯°æÀ» ó¸®ÇÑ´Ù
    }
}