![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Oct 2007
Сообщений: 45
|
Ситуация такая:
Создал класс Создал Мувиклип Поместил мувиклип на сцену и прописал в Linkage для этого мувиклипа вышесозданный класс. При старте всей флешке передаю в класс ссылку на этот мувиклип. У классса есть метод selectedIndex, который в мувиклипе присваивает значения 2 переменным MC.curItemValue = MC.Values[val]; MC.curItemText = MC.arrVals[val]; после этого переменная curItemValue - хранит нужное значение, а MC.curItemText - undefined. Оба массива из которых берутся значения заполнены переменными и с ними проблем нету. Код класса: class ListBox extends MovieClip {
public var MC:MovieClip;
function ListBox() {
}
public function addItem(iName,iVal):Void {
MC.arrVals.push(iName);
MC.Values.push(iVal);
if(MC.arrVals.length<2)
{
MC.curItemText = iName;
MC.curItemValue = iVal;
MC.sel_txt.text = iName;
}
}
public function removeAllItems() {
MC.arrVals.length = 0;
MC.Values.length = 0;
}
public function get list():Array {
return MC.arrVals;
}
public function get currentItemText() {
return MC.curItemText;
}
public function get value() {
return MC.curItemValue;
}
public function set selectedIndex(val):Void {
MC.curItemValue = MC.Values[val];
MC.curItemText = MC.arrVals[val];
MC.sel_txt.text = MC.curItemText;
}
//tmc - ссылка на мувик
public function set setmc(tmc):Void{
MC = tmc;
MC.arrVals = new Array();
MC.Values = new Array();
MC.countItems = 5;
}
public function setCountItems(val:Number):Void {
MC.countItems = val;
}
}
|
|
|||||
|
Modus ponens
|
А зачем это вообще нужно? Если класс уже наследуется от МувиКлипа не проще ли тот клип к которому линкуется класс и использовать? А то так поди знай когда вы определяете что это за клип (MC), и когда определяете в нем какие-то параметры...
ЗЫ. ща еще умные люди понабегут %) по поводу синтаксиса ругаться будут %) прописными - статические переменные, с прописной - имена классов.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 06.03.2008 в 11:31. |
|
|||||
|
Banned
[+1 21.02.08]
[+4 21.02.08] [+5 13.03.08] [+4 13.03.08] Регистрация: Feb 2008
Сообщений: 63
|
покажите код на флэшке.
|
|
|||||
|
Регистрация: Oct 2007
Сообщений: 45
|
Цитата:
Проблему на самом деле обошел, но не решил. А по поводу синтаксиса - а что, если название класса с большой буквы начинается, то он как-то по другому воспринимается флешей? Стаическая переменная с большой буквы - тоже не понял в чем проблема. В PHP я знаю, что все, что относится к OOП - пишется с большой буквы - это для компилятора надо. Во флеше так же? Код мувика (в первом и единственном кадре написан) stop();
selec._width = lwidth;
sel_txt._width = lwidth;
sel_txt.text = curItemText;//curItemText;
var sel_pressed = false;
var sy = selec._y;
var sx = selec._x;
var sw = lwidth;//selec._width;
var sh = selec._height;
var d_sel = 0;
var count = countItems;
var over;
var main_mc = createEmptyMovieClip("main_mc",1);
var sc_mc = createEmptyMovieClip("sc_mc",2);
unvis_all = function ()
{
var i = 0;
while (i < arrVals.length)
{
removeMovieClip(main_mc["sel" + i]);
i++;
sel_pressed = false;
}
main_mc._x = 0;
main_mc._y = 0;
removeMovieClip(sc_mc["scroll"]);
removeMovieClip(sc_mc["_scroll_bar"]);
removeMovieClip(sc_mc["_bg_scroll"]);
clearInterval(un_id);
}
roll = function (n, k)
{
n.onRollOver = function ()
{
setProperty(n._bg, _alpha, 0);
}
n.onRollOut = function ()
{
setProperty(n._bg, _alpha, 100);
}
n.onPress = function ()
{
selectedIndex = k;
sel_txt.text = arrVals[k];
unvis_all();
};
};
selec.onPress = function ()
{
if(!sel_pressed) {
posy = sy + sh;
posx = sx;
ListW = lwidth;
if(arrVals.length > count) {
sc_mc.attachMovie("scroll", "scroll", 1003, {_x: (sx), _y: (sy + sh)});
ListW = lwidth - sc_mc["scroll"]._width;
scx = sx + ListW ;// sc_mc["scroll"]._width;
}
var i = 0;
while (i < arrVals.length)
{
var cur_mc:MovieClip = main_mc.attachMovie("sel", "sel" + i, 200 + i, {_x: posx, _y: posy});
cur_mc._txt.autoSize = true;
cur_mc._txt.text = arrVals[i];
cur_mc._bg._width = ListW;
cur_mc._bgAlt._width = ListW;
cur_mc._bg._height = cur_mc._height;
cur_mc._bgAlt._height = cur_mc._height;
posy = posy + cur_mc._txt._height;
roll(cur_mc, i);
i++;
}
msk_mc._width = main_mc["sel0"]._width+5;
msk_mc._height = ((main_mc["sel0"]._txt._height) * count);
msk_mc._x = sx;
msk_mc._y = sy + sh;
main_mc.setMask(msk_mc);
if(arrVals.length > count)
{
dy = (main_mc["sel0"]._txt._height) * count - sc_mc["scroll"]._onpr._height;
sc_mc["scroll"].onPress = function() {
startDrag(this,false,scx+0.5,sy + sh,scx+0.5,(sy + sh + dy));
s = true;
}
sc_mc["scroll"]._x = scx;
sc_mc["scroll"].onRelease = function(){
this.stopDrag();
s = false;
}
sc_mc["scroll"].onReleaseOutside = function(){
this.stopDrag();
s = false;
this._onpr._reds._alpha = 0;
}
sc_mc["scroll"].onRollOver = function ()
{
this._onpr._reds._alpha = 100;
}
sc_mc["scroll"].onRollOut = function ()
{
this._onpr._reds._alpha = 0;
}
sc0 = Math.floor(sc_mc["scroll"]._y);
sc100 = Math.floor((sy + sh + dy) - sc_mc["scroll"]._y);
mc0 = 0;
mc100 = main_mc["sel0"]._txt._height * (arrVals.length - count);
moveId = setInterval(m=function()
{
per = Math.floor((Math.floor(sc_mc["scroll"]._y) - sc0) * 100 / sc100);
main_mc._y = - per * mc100 / 100;
},10);
sc_mc.attachMovie("_scroll_bar", "_scroll_bar", 1002, {_x: (scx+5), _y: (sy + sh*5/4), _height:(sy + sh*1/4 + dy)});
sc_mc.attachMovie("_bg", "_bg_scroll", 1001, {_x:(scx), _y:(msk_mc._y), _width:(10), _height:(msk_mc._height)});
}
sel_pressed = true;
}else{
unvis_all();
sel_pressed = false;
}
}
var mouseListener:Object = new Object();
mouseListener.onMouseDown = function() {
if (main_mc._ymouse < (sy-d_sel+Math.abs(main_mc._y)) || main_mc._ymouse > (sy+main_mc["sel0"]._height*count + d_sel + sh + Math.abs(main_mc._y)) || main_mc._xmouse < (sx-d_sel) || main_mc._xmouse > (sx + sw + d_sel+sc_mc["scroll"]._width))
{
unvis_all();
}
}
Mouse.addListener(mouseListener);
Код флешки. Тут значит Loado.comboBox - это и есть тот самый мувик. Loado._x = 370;
Loado._y = 275;
Loado._visible = true;
Loado.comboBox.setmc = Loado.comboBox;
for(var lNode:XMLNode = list.firstChild.firstChild; lNode != null;lNode = lNode.nextSibling)
{
Loado.comboBox.addItem(lNode.attributes.order_name,lNode.attributes.order_id);
}
///Loado.comboBox.selectedIndex = 1;
//_global.Message(Loado.comboBox.curItemText,'','');
Loado._ok._f = funct;
Loado._close.onRelease = function ()
{
this._parent._visible = false;
}
Loado._ok.onRelease = function ()
{
_global.id = Loado.comboBox.value;
this._f();
this._parent._visible = false;
}
Loado._cancel.onRelease = function ()
{
this._parent._visible = false;
}
Loado._shapka.onPress = function ()
{
Loado.startDrag(false,1,15,744,700-Loado._height);
}
Loado._shapka.onRelease = Loado._shapka.onReleaseOutside = function ()
{
Loado.stopDrag();
}
Loado._shapka.useHandCursor = false;
|
|
|||||
|
Banned
[+1 21.02.08]
[+4 21.02.08] [+5 13.03.08] [+4 13.03.08] Регистрация: Feb 2008
Сообщений: 63
|
имя класса прально,с большой буквы.Свойство класса - на ваше усмотрение,я именую с маленькой и начинаю с подчёркивания, _mc.Так видно,что это свойство класса.А вот имена методов надо слитно писать.
итить-колотить! у вас еще и в мувике код?Как-то тут всё запутано....Еще вопрос? зачем вы писали класс,если у вас так много кода на кадре и еще и в мувике? Что этот класс делает? |
|
|||||
|
Modus ponens
|
http://flasher.ru/forum/showthread.php?t=108898
Проверять watch"ем определена ли переменная (переменныэ в клипе инициализируются после выполнения конструктора)
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Oct 2007
Сообщений: 45
|
эм - в общем это я заменитель комбобокса стандартного писал. Посколько этих комбобоксов на сцене много, то решил сделать их как бы универсальными, т.е. есть класс - в котором методы хранятся (т.е. методы имеют те же имена, что и у стандартного компонента) и есть мувиклип, который я выкладываю прямо на сцену. Т.е. класс нажун был только для того, чтобы на переписывать большие куски кода, которые были со времен стандартного комбобокса.
Проблема была в том, что надо было все данные хранить не в классе, т.к. класс один на все комбобоксы сцены, для этого я и передавал ссылку на каждый мувик (комбобокс на сцене), а по этой ссылку создавал у мувика переменные и массивы. |
|
|||||
|
Omar2002, чтобы переменные были видны в вашем классе их нужно обьявить.
, и this в вашем классе ето ваш мувиклип на котором класс
|
![]() |
![]() |
Часовой пояс GMT +4, время: 01:56. |
|
|
« Предыдущая тема | Следующая тема » |
|
|