Я думаю, что вы делаете это немного странным образом. Вместо создания оболочки для вашего класса GameView, сделайте так, чтобы GameView расширил оболочку, которая уже была создана для вас: SpriteVisualElement
. Тогда вы сможете использовать GameView напрямую в mxml вместо того, чтобы переносить его в ArenaView.
Что может вас смущать, так это несоответствие между размерами и размерами Flex и размерами классов низкого уровня, таких как Sprite и Shape. Вы, вероятно, уже знаете, что когда вы рисуете внутри спрайта, ширина и высота спрайта будут отражать самые дальние границы вашего рисунка. Теперь с Flex родитель сообщает своему дочернему элементу, какой он должен быть (через setActualSize()
).
Затем ребенок может или не может попросить родителя: «Но я не хочу быть такого размера! Я хочу быть этим размером», и он делает это, представляя родительские значения от его функции measure()
.
В конце концов, родитель все еще сообщает своему ребенку, какой именно размер должен быть, но будучи хорошим родителем, он дает своему ребенку некоторую свободу делать то, что он хочет, с его новым размером (так что updateDisplayList()
дочернего элемента вызывается и он может вытащить мелки и сделать красивую картинку с указанным размером).
С этой маленькой историей вам придется решить: должен ли мой GameView просто рисовать сам себя? Или мой GameView должен нарисовать то, что ему нужно, основываясь на каком-то параметре, например, доступном размере окна браузера?