![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|
|
|||||
|
Banned
Регистрация: Jan 2001
Сообщений: 201
|
Имею два класса. На входе XML . На выходе: меню и текстовое поле с динамически управлемым явлением на сцене его величества textScrollBara. Все уже работет, за исключением одной штуки которой не хотелось бы пренебречь
)Один класс меню из XML создает и получает данные для textFields также. Второй создает textField и управляет scrollBar: "надо-не надо" появляться ему ( class TextandScroller extends mx.controls.UIScrollBar{...}) однако.... Как из класса вызвать глобальную переменную CSS? (в данноам случае -"my_CSS", создан т получены данные в него просто в _level0 сайта) Внутри класса создаю текстовое поле и .. ну никак оно не хочет подчиняться стилю! Из класса обращаюсь напрямую к глобальной переменной, при определении класса ее не упоминаю. Код примерно такой для ясности шагов: //вызываем из конструктора: private function create_TextField(_depth_Txt:Number, _xTxt:Number , _yTxt:Number, _widTxt:Number, _heigTxt:Number, colorTxt:Color): Void { var thisObj=this m_parent_mc.createTextField("name_of_text"+_depth_Txt,_depth_Txt, _xTxt , _yTxt, _widTxt, _heigTxt, colorTxt); m_parent_mc["name_of_text"+_depth_Txt].border = true; //это тоже не действует m_parent_mc["name_of_text"+_depth_Txt].borderColor = 0xCCCC99;//это тоже не действует my_text=m_parent_mc["name_of_text"+_depth_Txt] my_text.html = true; my_text.multiline = true; my_text.wordWrap = true; my_text.htmlText = "<p><b>Hermitage</b> a leading place in Internet communications. The speed of internet comunications grows up </p>"; my_text.styleSheet=my_CSS//подставлял и " _global.my_CSS" однако не работает! добавлю- недавно влез в AS2 c практикой, извиняйте, если где-то просто не догнал, жаргонно выражаясь . |
|
|||||
|
Banned
Регистрация: Jan 2001
Сообщений: 201
|
просто все заработало и вот
Ответ: Формируя массив из текстов для раздела (-ов если не жаль юзера ) надо указывать носителем текста не, например, my_xml.firstChild.firshChild.nodeValue , a my_xml.firstChild.firshChild (БЕЗ nodeValue) - это даже где-то описано забыл где .далее... обращаться надо сначала к объекту "_global.my_CSS" в классе, а затем писать my_text.text="<p>bla-bla</p>" ну или присваивать переменную. пример подхода: имеем _global.my_CSS в _level0 имеем для scroll bara и textField: class TextandScroller extends mx.controls.UIScrollBar{ private var m_parent_mc:MovieClip; private var _depthTxt:Number private var _xTxt:Number private var _yTxt:Number private var _widTxt:Number private var _heigTxt:Number public var my_text:TextField function TextandScroller(my_mc:MovieClip,depth_txt:Number, xx:Number, yy:Number, width_Txt:Number, height_Txt:Number){ this.m_parent_mc = my_mc; this._depthTxt=depth_txt this._xTxt=xx this._yTxt=yy this._widTxt=width_Txt this._heigTxt=height_Txt create_TextField(_depthTxt, _xTxt , _yTxt, _widTxt, _heigTxt) } private function create_TextField(_depth_Txt:Number, _xTxt:Number , _yTxt:Number, _widTxt:Number, _heigTxt:Number, colorTxt:Color): Void { var thisObj=this m_parent_mc.createTextField("name_of_text"+_depth_Txt,_depth_Txt, _xTxt , _yTxt, _widTxt, _heigTxt, colorTxt); m_parent_mc["name_of_text"+_depth_Txt].border = true;//это работает m_parent_mc["name_of_text"+_depth_Txt].borderColor = 0xCCCC99;//.это работает my_text=m_parent_mc["name_of_text"+_depth_Txt] my_text.html = true; my_text.multiline = true; my_text.wordWrap = true; my_text.styleSheet=_global.my_CSS //вот об этом речь my_text.htmlText = "<p><b>Hermitage</b> WorksHeralashcard was produced in 3 hours and just for fun </p>"; }; public function CheckAndShowScrBr(xx, yy): Void { var scrB_x = _widTxt+_xTxt; var scrB_y = _yTxt; if (my_text.maxscroll>1) { m_parent_mc.createClassObject(mx.controls.UIScrollBar, "vSB", 210); // set the target text field m_parent_mc.vSB.setScrollTarget(my_text); // size it to match the text field var my_height = my_text._height+1; m_parent_mc.vSB.setSize(16, my_height); // move it next to the text field scrB_y = my_text._y; m_parent_mc.vSB.move(scrB_x+2, scrB_y); //vSB._visible=false } else { remove();/////////////////// } } private function remove(vSB):Void { vSB.unloadMovie(); } //end of class } класс для кнопок и загрузки чтобы не згромождаь не стал помещать, но именно там я использую только "firstChild" а не "firstChild.nodeValue" подход такой ..при разборе XML: ...for (var j = 0; j<shortcut.childNodes.length; j++) { submenu_array.push({sbt_name:shortcut.childNodes[j].attributes['sample_name'], what_toload:shortcut.childNodes[j].attributes['what_load'], expSubtn:shortcut.childNodes[j].attributes['explane'],explNodeValue:shortcut.childNodes[j].firstChild});//вот оно НЕ надо "childNode" писать } при загрузке данных по нажатию подкнопки: ...... sub_btn.onRelease = function() { this.gotoAndStop(3) thisObj.load_s(this.data.what_toload/*,_root.d*/); //expl_txt.text=this.data.expSubtn this._parent._parent.r.my_text.styleSheet=_global.my_CSS//об этом речь this._parent._parent.r.my_text.htmlText=this.data.explNodeValue//this.data.expSubtn }..... вот и все. Делал на основе XML меню из Flash helpa, дин.скроллбар где-то тоже нарыл, но собрал под себя с добавками честно. Все обычно, просто class смущает поначалу.. А забыл, где взять бубен? Ибо у меня стойкое формируется мнение, что FLash начинает работать ровно после отправки сообщения с вопросом. Как бы издеваясь, вот мол дурак написал, теперь и отвечай сам, чтоб не подставляться. Самое смешное что это реально бывает. Как с этим вопросом. все делалось как описано, однако отправил- и только тогда заработало! извините за словоблуд. но тема вообще для меня актуальна: класс для загрузки, создания меню, класс для текстового поля со скроллбаром исчезающим. По-моему это одна из востребованных штук. |
![]() |
Часовой пояс GMT +4, время: 09:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|