- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
/**
* @private
*/
public function set heightInLines(value:Number):void
{
if (value == _heightInLines)
return;
_heightInLines = value;
heightInLinesChanged = true;
heightConstraint = NaN;
invalidateProperties();
invalidateSize();
invalidateDisplayList();
}
А значение по умолчанию-то NaN...
RichEditableText's measure() method uses widthInChars and heightInLines to determine the measuredWidth and measuredHeight. These are similar to the cols and rows of an HTML TextArea.
Since both widthInChars and heightInLines default to NaN, RichTextEditable "autosizes" by default: it starts out very small if it has no text, grows in width as you type, and grows in height when you press Enter to start a new line.
The default value is NaN.
bormand 07.04.2014 10:18 # 0
roman-kashitsyn 07.04.2014 10:30 # +1
bormand 07.04.2014 11:28 # +1
Хотя мне тут жабий подход все-таки по душе. Если компилер не смог доказать, что локальная переменная инициализирована - значит пускай программист ее явным образом инициализирует сам.
wvxvw 07.04.2014 11:35 # 0
Во-вторых, я не против NaN как такового, а против проверки NaN == NaN, которая в редких случаях может приветси к тому, что на каждом этапе рендеринга, это текстовое поле будет помечено как изменившееся (не смотря на то, что ничего не менялось), и его отрендерят по-новой (принимая во внимаие, что это текст, который рендерится посимвольно Флешем - это может сожрат очень много ресурсов).
bormand 07.04.2014 11:45 # 0
wvxvw 07.04.2014 11:52 # +1
Т.е. код выше в довольно редкой, но возможной ситуации, типа биндинга к этому свойству от другого свойства, которое тоже было NaN, компонент и лейаут менеджер впадут в бесконечный цикл валидации / инвалидации, при том, что изменений не было.