水平与垂直滚屏类RollPage
即时获得麻球游戏开发的最新消息,关注游戏开发者热门讨论,请各位开发者申请加入麻球官方群:121304476
也可以follow catfly围脖:t.sina.com.cn/iscat

这个类最新的版本:滚屏翻页类新版本rollPage2

这个类很好用,它可以完成多个内容的分页,滚屏与翻页功能。垂直或水平翻滚都可以,而且会自动计算是否到达第一页或者最后一页。
看看这个例子,我经常用到这个类。

This movie requires Flash Player 9

先来看看它有哪些参数:
RollPage($pageMc:Sprite,$vars:Object,$aix:String=”x”)
$pageMc:Sprite :把所有内容都放在这个容器中,如多个图片或者各分页内容
$vars:Object :这个对象会接收五个参数

$vars["totalNum"]:总内容个数,比如总共多少张图片
$vars["pageNum"]:设定每而或每屏显示多少个内容,比如每页显示几张图片
$vars["childPad"]:设置每个内容之间的间隔距离
$vars["childWidth"]:设置每个内容的高度
$vars["childHeight"]:设置每个内容的宽度

$aix:String :设置为垂直还是水平翻滚

使用这个类的方法:

rollPage类使用注意:
//所有的图片都在vImageMc中,
//vImageMc在别的容器中,必须保证vImageMc的x,y坐标都为0


var pageRoll:RollPage=new RollPage(vImageMc,{totalNum:12,pageNum:5,childWidth:100,childHeight:75,childPad:15});

//左右按钮
left.buttonMode=right.buttonMode=true;
left.addEventListener(MouseEvent.CLICK, function (e:MouseEvent):void{pageRoll.toRoll(pageRoll.page-1);});
right.addEventListener(MouseEvent.CLICK, function (e:MouseEvent):void{pageRoll.toRoll(pageRoll.page+1);});

每页中的内容如何排列,可以看看《加载图片(读取xml,json数据)并进行阵列

实例文件下载:rollPage.rar

完整的类文件:


package {
	import flash.display.Sprite;
	import com.gs.TweenLite;

	/**
	 * @author robin
	 */
	public class RollPage {
		private var pageMc:Sprite;
		private var vars:Object;
		private var aix:String;
		private var pageNum:uint=1;

		private var childNum:uint;
		private var pageChild:uint;
		private var spanLength:uint;
		private var childWidth:uint;
		private var childHeight:uint;
		private var childPad:uint;

		public function RollPage($pageMc:Sprite,$vars:Object,$aix:String="x") {
			pageMc=$pageMc;
			vars=$vars;
			aix=$aix;

			childNum=$vars["totalNum"];
			pageChild=$vars["pageNum"];
			childPad=$vars["childPad"];

			childWidth=$vars["childWidth"];
			childHeight=$vars["childHeight"];

			var mask:Sprite;
			if ($aix=="x") {
				spanLength = (childWidth+childPad)*pageChild;
				mask=makeArea(spanLength,childHeight);
			} else if ($aix == "y") {
				spanLength = (childHeight+childPad)*pageChild;
				mask=makeArea(childWidth,spanLength);
			}

			var pageParent:Sprite=pageMc.parent as Sprite;

			pageParent.addChild(mask);
			mask.x=pageMc.x;
			mask.y=pageMc.y;
			pageMc.mask=mask;
		}

		public function toRoll($pageNum:uint):void {

			if ($pageNum<=0) { 				trace("firepage"); 			} else if ($pageNum > Math.ceil(childNum/pageChild)) {
				trace("endpage");
			} else {
				if (aix=="x") {
					TweenLite.to(pageMc,.5,{x:-($pageNum-1)*spanLength});
				} else if (aix == "y") {
					TweenLite.to(pageMc,.5,{y:-($pageNum-1)*spanLength});
				}
				pageNum=$pageNum;
			}

		}

		public function set page(num:uint):void {
			this.pageNum=num;
		}
		public function get page():uint {
			return this.pageNum;
		}
		private function makeArea(w:uint,h:uint,alpha:Number= 0.5):Sprite {
			var area:Sprite=new Sprite  ;
			area.alpha=alpha;
			area.graphics.beginFill(0x000000,1);
			area.graphics.drawRect(0,0,w,h);
			area.graphics.endFill();
			return area;
		}
	}
}

猫抓鱼

2 Responses to “水平与垂直滚屏类RollPage”

  1. zz 说:

    能否提供这个类的具体使用方法的源码  [引用]

Leave a Reply