Показать сообщение отдельно
Старый 06.03.2008, 13:19
Omar2002 вне форума Посмотреть профиль Отправить личное сообщение для Omar2002 Найти все сообщения от Omar2002
  № 3  
Ответить с цитированием
Omar2002

Регистрация: Oct 2007
Сообщений: 45
Цитата:
Сообщение от wvxvw
Код:
public var MC:MovieClip;
А зачем это вообще нужно? Если класс уже наследуется от МувиКлипа не проще ли тот клип к которому линкуется класс и использовать? А то так поди знай когда вы определяете что это за клип (MC), и когда определяете в нем какие-то параметры...

ЗЫ. ща еще умные люди понабегут %) по поводу синтаксиса ругаться будут %)
прописными - статические переменные, с прописной - имена классов.
К сожалению не получается без этой ссылки обращаться к прилинкованному мувику. Т.е. Мувик без проблем использует переменные и методы класса, а вот класс к переменным мувика доступ не может получить - может руки кудрявые.

Проблему на самом деле обошел, но не решил.

А по поводу синтаксиса - а что, если название класса с большой буквы начинается, то он как-то по другому воспринимается флешей?
Стаическая переменная с большой буквы - тоже не понял в чем проблема.
В 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;