Logo

dansion’s 日志

学无止境~~~~~~~
rss
  • 首页
  • 日志首页
  • FLASH音乐盒
  • FLash 地图
  • 登录

Posts Tagged ‘actionscript3’

用Flash AS3正则表达式实现百度的MP3搜索

星期天, 三月 2nd, 2008

利用flash的URLRequest向百度发送关健字,再利用正则表达式提取mp3结果列表.再对结果列表再次请求,获取mp3的真实地址.
下面是具体的类



package {
    import flash.display.Sprite;
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.events.ProgressEvent;
    import flash.net.URLVariables;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.xml.*;
    import flash.events.IOErrorEvent;

    public class Mp3Search extends MovieClip {
        private var xmlTextField:TextField = new TextField();
        //dansion.com dansion@163.com,;
        private var loader:URLLoader;
        private var sub:Number;
        public var Mp3List:Array;

        public function Mp3Search() {
            Mp3List=new Array();
            Mp3_search.trackAsMenu=true;
            Mp3_search.addEventListener(MouseEvent.CLICK,search);
        }
        private function search(event:Event):void {
            var variables:URLVariables=new URLVariables("f=ms&tn=baidump3&ct=134217728&lf=&rn=&lm=0");
            variables.word=input.text;
            var request:URLRequest = new URLRequest();
            request.url="http://mp3.baidu.com/m";
            request.data=variables;

            loader = new URLLoader();

            try {
                loader.load(request);
            } catch (error:SecurityError) {
                trace("A SecurityError has occurred.");
            }

            loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);
            loader.addEventListener(ProgressEvent.PROGRESS,loaderProgress);

            trace("btn is donw: "+input.text);
        }
        private function loaderCompleteHandler(event:Event):void {
            progress_txt.text="加载完成";
            //var mp3Exp:RegExp=/http://([w-]+.)+[w-]+([w- ./?$,[]%&;:,+=u4e00-u9fa5]*)?216/g;
            //var mp3Exp:RegExp=/http://[^box][0-9]([w-]+.)+[w-]+([w- ./?$,[]%&;:,+=u4e00-u9fa5]*)?216/g;
            var mp3Exp:RegExp=/http://220.181.38.82([w- ./?$,[]%&;:,+=u4e00-u9fa5]*)?216/g;
            var mp3_array:Array=new Array();
            mp3_array=loader.data.match(mp3Exp);
            //trace(loader.data.match(mp3Exp));
            /*for (var i=0; i<mp3_array.length; i++) {
                //trace("输出:  "+mp3_array[i]+"   结束");
                var chineseExp:RegExp=/[u4e00-u9fa5]+/;
                //trace(mp3_array[i].match(chineseExp));
                Mp3Name.push(mp3_array[i].match(chineseExp));
            }*/
            trace("——————–");
            formatURL(mp3_array);

        }
        private function formatURL(array:Array) {
            for (var i=0; i<array.length; i++) {
                SubLoad(array[i],i);
                //sub=i;
            }
        }
        private function SubLoad(url:String,num:Number) {
            var chineseExp:RegExp=/[u4e00-u9fa5]+/;
                //trace(mp3_array[i].match(chineseExp));
                //trace(url);
            //var mp3name:String=new String();
            var mp3name:String=String(url.match(chineseExp));
            
            var subrequest:URLRequest = new URLRequest();
            subrequest.url=url;
          
60; var sub_loader:URLLoader;
            sub_loader = new URLLoader();
            try {
                sub_loader.load(subrequest);
            } catch (error:SecurityError) {
                trace("A SecurityError has occurred.");
            }
            sub_loader.addEventListener(Event.COMPLETE,SubLoaderComplete);
            //sub_loader.addEventListener(ProgressEvent.PROGRESS,loaderProgress);
            function SubLoaderComplete() {
                progress_txt.text="开始分析第"+mp3name+"搜索结果";
                var SubMp3Exp:RegExp=/http://([w-]+.)+[w-]+([w- ./?%&=u4e00-u9fa5]*)?.mp3/g;
                trace(mp3name+" :: "+sub_loader.data.match(SubMp3Exp)[0]);
            }
        }
        private function loaderProgress(event:ProgressEvent):void {
        progress_txt.text=String(event.bytesLoaded)+"/"+String(event.bytesTotal);
        }
        private function errorHandler(event:IOErrorEvent):void {
            trace("IOErrorEvent 出错");    
        }
    }
}



其中主要是两个正则表达式写法.
新建一个MC链接Mp3Search类,MC里有一个文本输入框(名:input),一个表示按扭的MC(Mp3_search),加载提示动态文本框(progress_txt).

转载请注明出处!

点这里下载

Tags: actionscript3, flash, Flash ActionScript, mp3
Posted in 作品 | No Comments »

FLash中escape()出问题

星期二, 一月 8th, 2008

利用escape () 转化中文的URL地址,但转成的结果并非是正确的结果。
查来查去,最后发现是AS3.0的escape()和AS2.0的escape()有着不同的功能。
AS3.0用escapeMultiByte ()的功用才和AS2.0一样。

Tags: actionscript3, flash
Posted in Flash ActionScript | No Comments »

Flash中ExternalInterface.call返回null值

星期一, 十二月 31st, 2007

利用ExternalInterface.call调用html里的js函数,参照了flash帮助文档里的做法.可以执行js的函数.但就是无法获取return的值.
网上一大堆教程也只是抄flash帮助文档的东西.也试了allowScriptAccess=always.结果无效,
最后让我去搜了N个flash网站,答案居然是只要给<object>加上一个id或是name就解决了.
哎…….无语了

注(IE7.0)

Tags: actionscript3, flash
Posted in Flash ActionScript | 4 Comments »

FLash子类继承父类的带参数的构造函数

星期一, 五月 14th, 2007

想给FLASH的Date类增加一些农历的数据.当然是继承Date再增加一些方法啦.
但在做的过程发现在以前从没有碰到过的问题.
农历的数据是从公历数据换算过来的.而Date类在实例过程中有好几中方式.
怎么样继承父类的构造函数,在flash帮助文档中"重写方法和属性"中得到结果结论:
Widget.as类文件

class Widget {
    public static var widgetCount:Number = 0;
    public function Widget() {
        Widget.widgetCount++;
    }
    public function doSomething():Void {
        trace("Widget::doSomething()");
    }
}


SubWidget.as类文件

class SubWidget extends Widget {
    public function SubWidget() {
        trace("Creating subwidget # " + Widget.widgetCount);
        doSomething();
    }
}


在新建的flash文档中


var sw1:SubWidget = new SubWidget();
var sw2:SubWidget = new SubWidget();



输出结果:


Creating subwidget # 1
Widget::doSomething()
Creating subwidget # 2
Widget::doSomething()



结论是子类继承父类,也继承了父类的构造函数.但是Date类构建函数是带参数,而且还是有多种方式.
最后,终于在flash帮助文档中找到了super条目.以前一直没有注意.以前做的东西也很少有这样父类,子类,爷类的.
super用法:


super.method([arg1, ..., argN])
super([arg1, ..., argN])



第一种语法格式可以在对象方法体内使用,用于调用方法的超类版本,而且可以选择向超类方法传递参数 (arg1 … argN)。这对于创建某些子类方法很有用,这些子类方法在向超类方法添加附加行为的同时,又调用这些超类方法执行其原始行为。

第二种语法格式可以用于构造函数体内,用以调用此构造函数的超类版本,而且可以选择向它传递参数。这对于创建子类很有用,该子类在执行附加的初始化的同时,又调用超类构造函数执行超类初始化。

我的农历date类 LunarCalendar.as,其实的参数完全和date类的参数一样.


class LunarCalendar extends Date {
 public function LunarCalendar(yearOrTimevalue:Number, month:Number, date:Number, hour:Number, minute:Number, second:Number, millisecond:Number) {
  super(yearOrTimevalue, month, date, hour, minute, second, millisecond);
 }
}

Tags: actionscript3, flash
Posted in Flash ActionScript | No Comments »

  • about me

    dansion:现就职于口碑UED,从事前端发开工作。倚看浮尘,独乐矣!
    twitter:dansion.zeng
  • TAG

      五笔 农历 播放器 玄学 百度 网站 actionscript3 AMFPHP as css CSS3预览 dreamweaver FancyUpload ff firefox flash flash 10 Flash ActionScript Flash ActionScript flash cs3 flash remotion flex flv google html ie ie6 ie8 im Javascript js loader mp3 opensearch qq svn textarea WebSlices z-index
  • 最新文章

    • js与flash交互
    • yui2.8在Dreamweaver的代码提示
    • QQ五笔的小动作!
    • swfobject判断浏览器是否安装或是启用flash
    • 自定义 Dreamweaver CS4 代码提示
    • FLASH Loader 的 bug?
    • 离开深圳
    • JS滚动条
    • as闭包,addEventListener传参数.
    • 闭包!!!
  • 最新评论

    • tms: as3 已经不支持扩展date了,悲剧了
    • xw1001: 帮了大忙多谢分享
    • qq: qq拼音也有的,本来以为qq拼音很简洁,是qq唯一一款我用着好的产品,但没想到在这还有个陷阱呢,看来qq的东西还是少用为好。
    • zhouqi: 好冷清,捧场来了~ YUI提示快上来吧~
    • kenis: 在天地会看到博主的农历类,特地来这里感谢博主~
    • dafi: QQ五笔输入法已经出来了。
    • admin: 是比较杯具,因为虚拟服务商的问题。dis文件是文本类型的。
    • jinhr: 无法下载,以下是显示的错误信息。太可笑了。 发现被禁止的关键字:**** 在页面上发现被禁止的关键字:****! 请及时删除!
    • dafi: 你不在,吃饭时杀伤力都不强了。 那天江请吃饭都松了口气:还好曾董不在。。。
    • auzn: 是有问题 :)
  • 分类

    • Flash ActionScript (8)
    • FLASH心得 (8)
    • Javascript (6)
    • xhtml+css (16)
    • 了心作 (5)
    • 作品 (3)
    • 其它 (7)
    • 未分类 (8)
    • 网站相关 (2)
    • 胡言乱语 (2)
  • 存档

    • 2010年二月
    • 2009年十一月
    • 2009年十月
    • 2009年八月
    • 2009年七月
    • 2009年六月
    • 2009年五月
    • 2009年四月
    • 2008年十二月
    • 2008年八月
    • 2008年六月
    • 2008年五月
    • 2008年四月
    • 2008年三月
    • 2008年二月
    • 2008年一月
    • 2007年十二月
    • 2007年十一月
    • 2007年十月
    • 2007年五月
    • 2007年四月
    • 2007年三月
    • 2007年一月
© 2005-2010 dansion’s 日志 is proudly powered by WordPress Entries (RSS) and Comments (RSS). 浙ICP备06014046号