XML动态菜单 (二)flash_Flash As

在上一期的XML菜单的教程中,我们做了一个简单的纵向排列的XML文字菜单,并且在flash中附加了一个跟随鼠标的缩略图。缩略图的数据也是从XML中提取的。
在我们XML菜单教程的第二期,我们来解决另外一个问题。
我们都知道XML的方便,随意的更改,删除和添加数据。请注意,更改和删除还好,如果添加的话,这里就会有一个界面排版和用户使用的问题的。拿我们上一次的XML菜单来演示,我把我们的XML文件有添加了几十条内容,结果我们的XML菜单变成这样了:
http://www.keyframe1.com/tute/xmlMenu2/index2.htm
下面的菜单看不到了,可能很多人马上已经想到了解决这种问题的办法。对!我们要让我们的用户可以滚动浏览我们的XML菜单,就像这样:
http://www.keyframe1.com/tute/xmlMenu2/
现在你可以看到所以XML文件里的几十条记录全部在舞台上,并可以让用户来滚动浏览。无论你如何修改XML文件,永远是鼠标放在菜单顶端会停留在菜单的第一条,当鼠标滑动至菜单的底端时会停留在菜单的最后一条,无论XML文件的纪录条数,如果很短,滚动会自然不存在,如果超出规定菜单高度,就会像刚才所说的那样的规律来滚动,即便XML中有1000条记录也如此。
由于是建立在上一期教程的基础上的,一些在上一期中重复使用了的代码就不再讲解了。上一期XML菜单教程地址: XML动态菜单 (一)
第一步, 分析项目:
  > 组成部分
      - XML文件;
      - FLASH源文件;
      - 缩略图JPG文件,50px X 50px 存放在 thumb文件夹;
  > 步骤
      - 要使XML菜单可以滚动,最简单的办法就是把所有装有XML菜单的影片剪辑都放在一个母影片剪辑中;
      - 计算出正确的等式;
第二步,开始建立我们需要的一些元素,并把它们摆到大概理想的位置:
  > 一个放所有装有XML菜单的影片剪辑的母影片剪辑,我们叫做mcontainer 150px宽,高340px;
  > 两个上下箭头,只是为了美观;
  > 把mcontainer 影片剪辑在工作去摆到(310, 30);
第三步,actionscripting

复制代码 代码如下:

//这次我们添加了些新的变量由于计算方便需要
var menut:Number = 30; 
var menul:Number = 300; 
var menub:Number = 370; //菜单底部坐标
var menuw:Number = 150; //菜单宽度
var menuh:Number = menub - menut; //菜单在舞台显示高度 (也就是遮罩高度)
var home:MovieClip = this;
var mlh:Number = 20;
var tlh:Number = 60;
var speed:Number = 2;
//关于XML的读取我们就不再解释了,请参考上一期教程。我们直接进入本期教程的核心代码:鼠标滚动计算等式:
mcontainer.onEnterFrame = function()
{
    if(_root._xmouse > menul && _root._xmouse < (menul + menuw)) //当鼠标的滑动至菜单的舞台显示区域时激活滑动代码,我们不希望鼠标在舞台上任何地方移动时菜单都在滚动
    {
        var per:Number = (_root._ymouse - menut) / menuh; //计算鼠标从菜单顶部向下滑动了多少?并处以菜单高度得出鼠标移动的百分比
        var menuth:Number = mlh * numMenu; //利用菜单文字行距和XML记录总条数算出菜单实际高度
        //滚动菜单原理是:鼠标从菜单顶部向下滑动了百分之多少,菜单就相应的向上移动自己实际高度的百分之多少,然后再加上鼠标向下移动的实际像素数。呵呵,慢慢琢磨下应该不难理解,实在是没有更简单的解释方法,本身就是那么个单纯的事情
        mcontaindy = menut - menuth * per + menuh * per;
        mcontainoldy = this._y;
        this._y += (mcontaindy - mcontainoldy) / speed;
        if(_root._ymouse < menut)mcontainer._y = menut; //如果鼠标小于菜单顶部坐标,把菜单坐标写死到顶部坐标;
        if(_root._ymouse > menub)mcontainer._y = menut - menuth + menuh; //同样如果鼠标大于菜单底部坐标,把菜单坐标写死到底部坐标;
    }
}

这个就是本期最主要的代码了,其他的相信看过上一期教程的看看源文件的注解应该可以搞明白的。
现在我们可以真正随意修改,删除,添加我们的XML文件了,我们的XML菜单都可以满足用户的正常浏览使用。试试添加它500条记录。如果你在做一个相册,里面有上百张照片,这个可以是个不错的选择,滚动的简单文字标题和缩略图,使用起来应该很友好的。
下一期XML菜单教程希望尽快可以出来。 多谢阅读!

时间: 2024-10-31 00:37:23

XML动态菜单 (二)flash_Flash As的相关文章

XML动态菜单flash教程二

在上一期的XML菜单的教程中,我们做了一个简单的纵向排列的XML文字菜单,并且在flash中附加了一个跟随鼠标的缩略图.缩略图的数据也是从XML中提取的. 在我们XML菜单教程的第二期,我们来解决另外一个问题. 我们都知道XML的方便,随意的更改,删除和添加数据.请注意,更改和删除还好,如果添加的话,这里就会有一个界面排版和用户使用的问题的.拿我们上一次的XML菜单来演示,我把我们的XML文件有添加了几十条内容,结果我们的XML菜单变成这样了: http://www.keyframe1.com/

XML动态菜单

xml|菜单|动态 大家都喜欢XML,因为它省事,我平时做东西也尽可能的用XML,因为实在是日后更新修改太方便了,都不用动fla源文件. 本XML系列教程将分三部分发布,到最后一期我们将拥有一个功能全面,更加友好的XML菜单.本教程这个第一期涉及到了一些XML的基础知识. 这里我们要做的效果是一个纵向排列的动态XML的菜单,并且当鼠标滑动到菜单上显示相应的缩略图,这个我们在很多摄影作品展示flash网站经常见到的.在线展示:http://www.keyframe1.com/tute/xmlMen

XML动态菜单flash教程

大家都喜欢XML,因为它省事,我平时做东西也尽可能的用XML,因为实在是日后更新修改太方便了,都不用动fla源文件. 本XML系列教程将分三部分发布,到最后一期我们将拥有一个功能全面,更加友好的XML菜单.本教程这个第一期涉及到了一些XML的基础知识. 这里我们要做的效果是一个纵向排列的动态XML的菜单,并且当鼠标滑动到菜单上显示相应的缩略图,这个我们在很多摄影作品展示flash网站经常见到的.在线展示:http://www.keyframe1.com/tute/xmlMenu/ 第一步, 分析

ASP.NET中根据XML动态创建并使用WEB组件(二)

asp.net|web|xml|创建|动态 ASP.NET中根据XML动态创建使用WEB组件 (二) 作者:厉铁帅 三.动态创建WEB组件. 先来看程序实例: private void createconfigtable(int totalnum,int[] sequenceint,string[] namestr,string[] ipstr) { //根据得到测量点的总数,动态生成输入框 for(int i=1;i<=totalnum;i++) { //创建表格 HtmlTable show

利用ASP和XML制作菜单导航系统

xml|菜单|导航 1.1 概述 高效地利用Web页面有限的空间并不容易,特别是要在页面中安排大量的链接时尤为困难.如何才能组织好各种链接以便为其它重要内容留出空间?是一次性地展示所有链接还是分成多个页面把它们深深地隐藏起来?显然,这两种方法都不理想.利用DHTML,我们可以在为用户提供快速方便的访问链接的同时,为其它内容保留足够的页面空间. 本文介绍一个菜单系统的实现.这个菜单与Windows的"开始"菜单非常相似,用户只需点击一次鼠标即可访问所有链接.菜单的内容由XML文档定义,客

动态菜单怎么做?

问题描述 各位大侠动态菜单怎么做啊急急~`从数据库里面取值的??????????? 解决方案 解决方案二:出现什么问题了吗?通常无论微软自带的菜单类下面都有类似menuitem的类,把这些作为元素都添加进菜单里就可以了.而且,menuitem也可以添加到menuitem里,形成子菜单,很多都是这么封装的.当然数据库里的数据结构不定,比如父子结构什么的啊很难统一,所以都是靠如上的方法让用户手动编程进去的.另外开源的menu我推荐楼主看extjs下相关的封装.解决方案三:帮你顶一下解决方案四:men

menu.addIntentOptions 添加动态菜单

 android的一个activity可以再选中某项之后按menu键弹出特定的菜单,也就是动态菜单.动态菜单的实现是靠menu类中的addIntentOptions函数实现的,具体的声明如下: int android.view.Menu.addIntentOptions(             int groupId,             int itemId,             int order,             ComponentName caller,        

ASP.NET中根据XML动态创建并使用WEB组件(一)

asp.net|web|xml|创建|动态 ASP.NET中根据XML动态创建使用WEB组件 (一) 作者:厉铁帅 前段时间笔者在开发中需要动态创建WEB组件,本以为是小事一桩,谁知看时容易做时难.里面还真有些小问题.下面笔者就结合自己的程序来介绍一下如何动态创建并使用WEB组件,希望能给做类似工作的朋友提供一点帮助. 一.程序思路 程序主要分三部分: 1.程序要根据XML中的数据信息确定需要创建的WEB组件的个数. 2.动态创建WEB组件. 3.使用动态创建的WEB组件. 其中2和3是笔者要重

Android基于TranslateAnimation的动画动态菜单

先请注意,这里的菜单并不是按机器上的MENU出现在那种菜单,而是基于Android SDK提供的android.view.animation.TranslateAnimation(extends android.view.animation.Animation)类实例后附加到一个Layout上使之产生的有动画出现和隐藏效果的菜单. 原理:Layout(菜单)从屏幕内(挨着屏幕边沿,其实并非一定,视需要的初态和末态而定)动态的移动到屏幕外(在外面可以挨着边沿,也可以离远点,这个无所谓了),这样就可