![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Jul 2012
Сообщений: 112
|
Проблема в том,что при создании дочерних элементов внутри контейнера, я также хочу изменить его ширину, но она не меняется. Почему
package mvc { import flash.text.TextField; import flash.events.Event; import flash.display.DisplayObject;// import flash.display.Loader; import flash.display.Stage; import flash.display.MovieClip; public class View { private var numbSquare:Number; private var _model:Model; private var square:Square; private var container:Container; private var counter:Number = 0; private var loopBreak:Boolean = false; //private var container:MovieClip; public function View() { //container = C; /*trace(DocumentClass.stage); // [object Stage] trace(DocumentClass.root);*/ } public function set model(m:Model):void { _model = m; _model.addEventListener(Model.MODEL_CHANGED, update); } private function update(e:Event):void { container = new Container(); container.y = 66; DocumentClass.stage.addChild(container); numbSquare = Number(_model.numbSquare); for (var i:int = 0; i < 12; i++) { if (loopBreak == true) { trace("Выход из внешнего цикла"); break; } for (var j:int = 0; j < 6; j++) { if (counter == 12) { loopBreak = true; trace("Выход из внутреннего цикла"); break; } square = new Square(); square.width = 96;// ширина ячеек square.height = 96;// высота ячеек square.x = (square.width+5)*j; square.y = (square.height+5)*i; container.addChild(square); counter++; } } gg(); } private function gg():void { //DocumentClass.stage.width = 606; container.width = 606; //ширина контенера } public function get model():Model { return _model; } } } |
|
|||||
|
Ширина контейнера равна ширине содержимого в нем.
Это можно решить такой штукой как scrollRect
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Регистрация: Jul 2012
Сообщений: 112
|
Ну так на рисунке же видно,что ширина контейнера явно не равна ширине содержимого, а должна, вот я и спрашиваю почему она не равна? а
|
|
|||||
|
Я что-то не понял в чем вопрос значит.
Ширина меняется но не должна или должна но не меняется? Ширина контейнера автоматически будет равняться ширине содержимого. И что такое контейнер в таком случае?
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Регистрация: Jul 2012
Сообщений: 112
|
В моем случае, если посмотреть код, контейнер это элемент который добавляется на сцену, а затем в него добавляются блоки. Так вот контейнер должен становиться в итоге шириной равной суммарной ширине всех блоков, а он не становится такой шириной. Вот в этом и вопрос: почему он не становится нужной шириной?
|
|
|||||
|
Контейнер это неведомая хрень в данном случае. Какой-то твой класс, который я не вижу в том куске кода который ты скинул.
Вот его бы и посмотреть. А ширина контейнера АВТОМАТИЧЕСКИ ПРИРАВНИВАЕТСЯ К ШИРИНИЕ СОДЕРЖИМОГО ))) Для этого не надо ничего делать абсолютно. Кроме тех случаев если в контейнере какой-то бордюр натянут или еще какая графика. Так же ширина не изменится если этом неведомом классе используется свойство scrollRect - o котором я упоминал выше.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Здесь лучше бы было выложить код самого класса контейнера.
Кстати, по поводу выхода из цикла. Можно не применять флаг, в ас3 есть более удобный, джаваподобный способ отключать любой внешний цикл. Спомощью лейблов. Лучше написать так: outer: for (var i:int = 0; i < 12; i++) // даем циклу название, можно и не outer, это я написал для примера { for (var j:int = 0; j < 6; j++) { if (counter == 12) { break outer; // а тут указываем, какой именно цикл надо отключить } square = new Square(); square.width = 96;// ширина ячеек square.height = 96;// высота ячеек square.x = (square.width+5)*j; square.y = (square.height+5)*i; container.addChild(square); counter++; } } |
|
|||||
|
Регистрация: Jul 2012
Сообщений: 112
|
Цитата:
А вот в этом классе как раз и есть код создания контейнера. Сейчас прокоментирую в каком месте package mvc { import flash.text.TextField; import flash.events.Event; import flash.display.DisplayObject;// import flash.display.Loader; import flash.display.Stage; import flash.display.MovieClip; public class View { private var numbSquare:Number; private var _model:Model; private var square:Square; private var container:Container; // создаем переменную типа Container private var counter:Number = 0; private var loopBreak:Boolean = false; //private var container:MovieClip; public function View() { } public function set model(m:Model):void { _model = m; _model.addEventListener(Model.MODEL_CHANGED, update); } private function update(e:Event):void { container = new Container(); // создаем новый экземпляр класса Container container.y = 66; // расположение элемента Container DocumentClass.stage.addChild(container); //добавляем, собственно, Container numbSquare = Number(_model.numbSquare); for (var i:int = 0; i < 12; i++) { if (loopBreak == true) { trace("Выход из внешнего цикла"); break; } for (var j:int = 0; j < 6; j++) { if (counter == 12) { loopBreak = true; trace("Выход из внутреннего цикла"); break; } square = new Square(); square.width = 96;// ширина ячеек square.height = 96;// высота ячеек square.x = (square.width+5)*j; square.y = (square.height+5)*i; container.addChild(square); counter++; } } gg(); } private function gg():void { container.width = 606; //ширина контенера } public function get model():Model { return _model; } } } |
|
|||||
|
а теперь еще раз вниматено прочти мои ответы что я писал про графику.
Ширина контейнера - изменилась. А прямоугольник твой - это тоже содержимое, его надо растягивать отдельно.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|