Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   canvas и объекты внутри него (http://www.flasher.ru/forum/showthread.php?t=125241)

footman 19.05.2009 17:32

canvas и объекты внутри него
 
есть canvas, который можно изменять в размрах. у него есть child обычный текст. При измененении размеров canvas'а он подстраивается под его размер. но как толлько canvas изменяется до таких размеров, когда текст в него не влезает физически, текст исчезает.

можно ли как-нибудь это обойти? например если размер canvas'а слишком мал, то добавить скроллы или просто не отображать часть?

Distorn 19.05.2009 18:38

смотрите свойства minWidth, minHeight и useScrollPolicy - auto
для текста можно использовать truncateToFit

footman 19.05.2009 19:22

правильное решение - использовать свойство includeInLayout. тогда размеры дочернего компонента не учитываются при ресайзе.

но возникла другая проблема - есть ли в свойствах канваса аналог css overflow:hidden?

footman 03.06.2009 18:45

вопрос другой. тема смежная.

Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCC()">
 
        <mx:Script>
                <![CDATA[
                        import mx.core.UIComponent;
                        import mx.states.AddChild;
 
                        private function onCC():void
                        {
                                DrawLineButton.addEventListener(MouseEvent.CLICK, DrawLineButtonHandler);       
                        }
 
                        private function DrawLineButtonHandler(event:MouseEvent):void
                        {
                                var hLine:Shape = new Shape();
                                var hLineParent:UIComponent = new UIComponent();
 
                                hLine.graphics.moveTo(10, 5);
                                hLine.graphics.lineStyle(2, 0x990000, .75);
                                hLine.graphics.lineTo(10, 410);
 
                                hLineParent.addChild(hLine);
                                ChildCanvas.addChild(hLineParent);
                        }
                ]]>
        </mx:Script>
 
        <mx:VBox x="10" y="10">
                <mx:Canvas id="ParentCanvas" x="10" y="10" width="500" height="500" backgroundColor="#ffffff">
                        <mx:Canvas id="ChildCanvas" x="50" y="50" width="400" height="400" backgroundColor="#dadcde"/>
                </mx:Canvas>
                <mx:Button id="DrawLineButton" label="Draw Line" />
        </mx:VBox>
 
</mx:Application>

Есть ParentCanvas. Внутри него ChildCanvas. Рисуется линия и добавляется как child к ChildCanvas'у. Проблема в том, что линия выступает за пределы ChildCanvas'а. Можно ли как-нибудь сделать так, чтобы ChildCanvas "резал" (не отображал) те объекты, которые выступают за его границы. Вариант создать линию нужных размеров, чтоб она не выступала за пределы Canvas'а не подходит.

alekslitvinenk 03.06.2009 19:27

можете попробовать использовать маску.
если не планируете использовать scroll bar-ы можно у канваса установить свойство scrollRect, но будьте осторожны: некоторые контролы могут начать вести себя неадекватно.

footman 03.06.2009 21:44

большое спасибо! как раз то, что нужно!


Часовой пояс GMT +4, время: 14:39.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.