Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Почему может не работать Скроллинг? (http://www.flasher.ru/forum/showthread.php?t=153362)

psiworm 01.04.2011 15:08

Почему может не работать Скроллинг?
 
написал отдельный класс, который генерирует текстовое поле со скроллом.
скрол элементы подгружаются из SWC.
входящие данные, XML и координаты.

так вот когда добавляешь первый такой текстовый блок, там скрол работает, а на последующих не хочет :(
т.е. скролл есть, трассировка показывает, что клик идет, а события клика не выполняются.

Код AS3:

                private var TxtField:TextField = new TextField();
                private var TitleField:TextField = new TextField();
                private var FTitle:TextFormat = new TextFormat();
                private var FText:TextFormat = new TextFormat();
                private var data:XML;
                private var myFont1:Font = new presentum();
                private var PageField:MovieClip;
                private var myScroll:scroller;
                private var scrollX:uint;
                private var scrollY:uint;
                private var P:Number;
                private var scrollHeight:uint;
                private var rect1:Rectangle;
                private var scrollUp:ornament2;
                private var scrollDown:ornament2;
 
public function addPage(myXML:XML, num:uint=0, moveX:uint=0, moveY:uint=0, width:uint=50, height:uint=50,
                                                                color:Number=0x000000, titleShow:Boolean=false, titleSize:uint=18,        size:uint=10,
                                                                myNod:String="Page", gName:String="block"):MovieClip {
 
                        PageField = new MovieClip();
                        TitleField = new TextField();
                        TxtField = new TextField();
 
                        myScroll = new scroller();
                        myScroll.scaleX = myScroll.scaleY = 0.5;
 
                        data = myXML;
 
                        //-----------------------------
                        //Тут загружается текст в поле
                        //-----------------------------
                                        FTitle.size = titleSize;
                                        FTitle.font = myFont1.fontName;
                                        FTitle.color = color;
                                        FTitle.align = TextAlign.LEFT;
                                        /////////////////////
                                        FText.size = size;
                                        FText.font = "Tahoma";
                                        FText.color = color;
                                        FText.align = TextAlign.LEFT;
                                        TitleField.x = moveX;
                                        TitleField.y = moveY;
                                        TitleField.width = width;
                                        TitleField.height = titleSize*1.5;
                                        TitleField.type = TextFieldType.DYNAMIC;
                                        TitleField.defaultTextFormat = FTitle;
                                        TitleField.embedFonts = true;
                                        /////////////////////////////
                                        TxtField.x = moveX;
                                        if (titleShow == false) {TxtField.y = moveY} else {TxtField.y = moveY+TitleField.height+20}
                                        TxtField.width = width;
                                        TxtField.height = height;
                                        TxtField.defaultTextFormat = FText;
                                        TxtField.wordWrap = true;
                        //-----------------------------
                        TitleField.htmlText = data.child(myNod).child(gName).@title[num];
                        TxtField.htmlText = data.child(myNod).child(gName)[num];
 
                        //-----------------------------
                        //тут создается скролл
                        //-----------------------------
 
                        if (titleShow == true) {PageField.addChild(TitleField);}
                        PageField.addChild(TxtField);
                                if (TxtField.height < TxtField.textHeight) {
                                scrollX = moveX+TxtField.width+20;
 
                                //trace(TxtField.height+" - "+TxtField.textHeight);
 
                                PageField.graphics.lineStyle(1,0xcccc00);
                                PageField.graphics.moveTo(scrollX,TxtField.y+7);
                                PageField.graphics.lineTo(scrollX,TxtField.y+TxtField.height-7);
 
                        //-----------------------------
                        //а вот тут начинается проблема
                        //-----------------------------
                                scrollUp = new ornament2();
                                PageField.addChild(scrollUp);
                                scrollUp.x = scrollX;
                                scrollUp.rotation = -90;
                                scrollUp.y = TxtField.y-scrollUp.width/2;
                                scrollUp.addEventListener(MouseEvent.CLICK, onUp);
                                scrollUp.addEventListener(MouseEvent.MOUSE_OVER, onOver);
                                scrollUp.addEventListener(MouseEvent.MOUSE_OUT, onOut);
 
                                scrollDown = new ornament2();
                                PageField.addChild(scrollDown);
                                scrollDown.x = scrollX+1;
                                scrollDown.rotation = 90;
                                scrollDown.y = TxtField.y+TxtField.height+scrollDown.width/2;
                                scrollDown.addEventListener(MouseEvent.CLICK, onDown);
                                scrollDown.addEventListener(MouseEvent.MOUSE_OVER, onOver);
                                scrollDown.addEventListener(MouseEvent.MOUSE_OUT, onOut);
 
                                PageField.addChild(myScroll);
                                myScroll.x = scrollX;
                                scrollHeight = TxtField.height-myScroll.height;
                                scrollY = TxtField.y+myScroll.height/2;
                                myScroll.y = scrollY;
                                TxtField.addEventListener(Event.SCROLL, onScroll);
                        }
                        rect1 = new Rectangle(myScroll.x, myScroll.y, 0, scrollHeight);
 
                        return PageField;
                        }
 
                private function onOver(e:Event){
                        Mouse.cursor = "button";
                }
                private function onOut(e:Event){
                        Mouse.cursor = "arrow";
                }
 
                private function onUp(e:Event){
                        if (TxtField.scrollV > 0) {TxtField.scrollV--};
                        myScroll.y = Math.round(scrollY+(scrollHeight/TxtField.maxScrollV*TxtField.scrollV));
                }
                private function onDown(e:Event){
                        if (TxtField.scrollV < TxtField.maxScrollV) {TxtField.scrollV++};
                        myScroll.y = Math.round(scrollY+(scrollHeight/TxtField.maxScrollV*TxtField.scrollV));
                }
                private function onScroll(e:Event){
                        myScroll.y = Math.round(scrollY+(scrollHeight/TxtField.maxScrollV*TxtField.scrollV));
                }

а инициирую так

Код AS3:

Page1.addChild(TxtBlock1.addPage(myXML,0,420,20,550,400,0xffffff,true,24,12));
Page2.addChild(TxtBlock2.addPage(myXML,1,420,20,550,450,0xffffff,true,24,12));

Добавлено через 1 час 1 минуту
блин.... нашел! прастите меня алигафрена... :)


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

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