Показать сообщение отдельно
Старый 26.12.2006, 11:03
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
эта... там разбираться - очень долго и скучно, и не интересно....
Вот нарыл из своих старых экспериментов, в принципе все работало без глюков даже вроде... К сожалению там в коде будет немного лишнего и почти никаких каментов, ну так сложилось, если будешь пользовать - спрашивай тут.
класс для загрузки ХМЛя и частичной разборки
Код:
/**
* This class loads XML.
* It has these methods:
* get_length() - returns the number of the childnodes in the root node.
* get_anyVal() - returns a value of the attribute at the specified node
* get_node() - returns an XML produced by parsing specific childnode of the loaded XML.
*/
class XMLLoader extends XML {
	var watchedNode:XML;
	function XMLLoader(_str:String) {
		this.ignoreWhite = true;
		watchedNode = this;
		this.onLoad = function(ok:Boolean) {
			if (ok) {
				overLoad();
			}
		};
		this.load(_str);
	}
	public function overLoad(){};
	public function get_val(_str:String, nd:Number):String {
		return watchedNode.childNodes[0].childNodes[nd].attributes[_str];
	}
	public function get_length():Number {
		return watchedNode.childNodes[0].childNodes.length;
	}
	public function get_node(n:Number):XML {
		var tmp_xml:XML = new XML();
		var found:Boolean = false;
		tmp_xml.parseXML(watchedNode.toString());
		for (var i = 0; i<tmp_xml.childNodes[0].childNodes.length; i++) {
			if (tmp_xml.childNodes[0].childNodes[i].attributes.name == n.toString()) {
				tmp_xml.parseXML(tmp_xml.childNodes[0].childNodes[i]);
				found = true;
				break;
			}
		}
		if (!found) {
			tmp_xml = null;
		}
		return tmp_xml;
	}
	public function get_anyVal(_str:String, _arr:Array):String {
		var tmp_xml:XML = new XML(this.watchedNode.childNodes[0].toString());
		var tmp_nd:XMLNode = tmp_xml;
		var tmp_str:String = "";
		for (var i:Number = 0; i<_arr.length; i++) {
			if (tmp_nd.childNodes[_arr[i]] != null) {
				tmp_nd = tmp_nd.childNodes[_arr[i]];
			}
		}
		tmp_str = tmp_nd.attributes[_str];
		return tmp_str;
	}
}
Это вообще страшно... но, опять же, чем богаты, тем и рады
Этот класс загружает картинки
Код:
/**
* This class loads pictures.
*/
import mx.events.EventDispatcher;
class PicLoader extends MovieClipLoader {
	var l_obj:Object = {};
	function PicLoader(mc:MovieClip, _str:String, dim:Object) {
		var tgt:MovieClip = mc;
		var w:Number = mc._width;
		var h:Number = mc._height;
		var d:Object = dim;
		this.l_obj = {tgt:this};
		EventDispatcher.initialize(this.l_obj);
		this.l_obj.onLoadComplete = function(mc:MovieClip) {
			var dd:Object = d;
			var lo:Object = this;
			mc._done = false;
			mc.onEnterFrame = function() {
				mc._height = dd.h;
				mc._width = dd.w;
				if (mc._height != 0 && mc._width == dd.w) {
					mc._done = true;
				}
				if (mc._done) {
					this._parent.onResized();
					this.dispatchEvent({type:this.event});
					delete this.onEnterFrame;
				}
			};
		};
		l_obj.onDone = this.onDone;
		this.addListener(this.l_obj);
		this.loadClip(_str, tgt);
	}
	function onDone() {
	}
}
класс слайдера для показа превьюшек
_root._gp._ug - путь к объекту галлереи, знаю, что криво, но уж как получилось =)
Код:
/**
* This class is a part of the slideshow (pictures gallery)
* it creates a bar with prewievs
* It has the following methods:
* slide() - moves the previews to the left/right
* freez() - stops moving previews
* onSliderLoad() - returns an array of the properties of the first loaded preview
*/
class USlider extends MovieClip {
	var Ubody:MovieClip;
	var Umask:MovieClip;
	var Uholder:MovieClip;
	var x_loader:XMLLoader;
	var p_loader:PicLoader;
	var finished:Boolean = false;
	var fstNode:Number = -1;
	function USlider(mc:MovieClip, coord:Object, nd:Number) {
		this.Ubody = mc.attachMovie("rect", "Ubody", mc.getNextHighestDepth());
		this.Ubody._width = coord.W;
		this.Ubody._height = coord.H;
		this.Ubody._alpha = 0;
		this.Uholder = mc.createEmptyMovieClip("Uholder", mc.getNextHighestDepth());
		with (this.Uholder) {
			beginFill(0xffffff, 1);
			moveTo(0, 0);
			lineTo(coord.W, 0);
			lineTo(coord.W, coord.H);
			lineTo(0, coord.H);
			lineTo(0, 0);
			endFill();
		}
		this.Umask = mc.createEmptyMovieClip("Umask", mc.getNextHighestDepth());
		with (this.Umask) {
			beginFill(0xffffff, 1);
			moveTo(0, 0);
			lineTo(coord.W, 0);
			lineTo(coord.W, coord.H);
			lineTo(0, coord.H);
			lineTo(0, 0);
			endFill();
		}
		this.Uholder.setMask(this.Umask);
		x_loader = new XMLLoader("xmldata/en_image.xml");
		var tgt:MovieClip = this.Uholder;
		tgt.fn = this.fstNode;
		tgt._hd = "$";
		tgt._ds = "$";
		tgt.fd = this.finished;
		var n:Number = nd;
		x_loader.overLoad = function() {
			var _xml:XML = this.get_node(n);
			var ld:Number = 0;
			var i:Number = 1;
			var vn:XMLLoader = this;
			tgt.onEnterFrame = function() {
				if (ld<i) {
					var w_xml:XMLNode = _xml.childNodes[0].childNodes[ld];
					var nm:String = w_xml.attributes["name"];
					var hd:String = w_xml.attributes["heading"];
					var ds:String = w_xml.attributes["des"];
					var preview:MovieClip = tgt.attachMovie("rect", "rect"+i, tgt.getNextHighestDepth(), {_x:ld*75+2.5, _y:2.5});
					preview._width = 70;
					preview._height = 70;
					var p_loader = new PicLoader(preview, "album/"+nd+"/small/"+nm+".jpg", {h:preview._height, w:preview._width});
					ld++;
				}
				p_loader.onLoadComplete = function(mc:MovieClip) {
					(tgt._width);
					mc._parent.fn == -1 ? mc._parent.fn=Number(nm) : "";
					mc._parent._hd == "$" ? mc._parent._hd=hd : "";
					mc._parent._ds == "$" ? mc._parent._ds=ds : "";
					mc._nm = nm;
					mc._hd = hd;
					mc._ds = ds;
					mc._n = n;
					_root._gp._ug.updPreText(i, _xml.childNodes[0].childNodes.length);
					i++;
					mc.onRelease = function() {
						_root._gp._ug.changePict(this._nm, this._n, [this._hd, this._ds]);
					};
				};
				if (ld>=_xml.childNodes[0].childNodes.length) {
					this.fd = true;
					delete this.onEnterFrame;
				}
			};
		};
	}
	function slide(dir:Boolean):Void {
		var step = 6;
		if (dir) {
			this.Uholder.onEnterFrame = function() {
				this._x += step;
				if (this._x>0) {
					this._x = 0;
					delete this.onEnterFrame;
				}
			};
		} else {
			this.Uholder.onEnterFrame = function() {
				this._x -= step;
				if (this._x+this._width<this._parent.Umask._width-2.5) {
					this._x = this._parent.Umask._width-this._width-2.5;
					delete this.onEnterFrame;
				}
			};
		}
	}
	function freez():Void {
		delete this.Uholder.onEnterFrame;
	}
	function onSliderLoad():Array {
		if (this.Uholder.fd) {
			return [this.Uholder.fn, this.Uholder._hd, this.Uholder._ds];
		} else {
			return [-1, "$", "$"];
		}
	}
}
__________________
Hell is the possibility of sanity