首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

iOS开发-音乐播放

现在的各种App大行其道,其实常用也就是围绕着吃喝玩乐基本的需求,视频,音乐在智能手机出现之前更是必不可少的功能,每个手机都会有一个自带的音乐播放器,当然公众也有自己的需求所以也就造就了各种音乐播放软件,自己下午闲来无事简单的写了一个随机播放音乐的Demo,iOS中有三种播放音频的方式AVAudioPlayer、音频服务、音频队列。另外两种暂时没有用到,就简单的练手了一下AVAudioPlayer,还是开始正题吧; 1.新建项目或者在原有项目重新弄一个页面,先看页面: 2.导入几首自己喜欢的歌曲: 3.导入AVFoundation/AVFoundation.h,对四个按钮进行事件操作,一个AVAudioPlayer只能对应一个URL,因此播放其他歌曲的时候需要情况一下; 定义两个成员变量,并且初始化成员变量: 1 2 3 4 @interface MusicViewController () @property ( nonatomic ,strong)AVAudioPlayer *player; @property ( nonatomic ,strong) NSArray *musicArr; @end viewDidLoad实例化数组: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 - ( void )viewDidLoad { [ super viewDidLoad]; // Do any additional setup after loading the view. self .musicArr=@[@ "潮湿的心.mp3" ,@ "爱拼才会赢.mp3" ,@ "给我一个理由忘记.mp3" ]; [ self prepareMusic: self .musicArr[1]]; } - ( void )prepareMusic:( NSString *)path{ //1.音频文件的url路径 NSURL *url=[[ NSBundle mainBundle]URLForResource:path withExtension:Nil]; //2.实例化播放器 _player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil]; //3.缓冲 [_player prepareToPlay]; } 4.四个对应事件的代码: 随机: 1 2 3 4 - ( IBAction )random:( id )sender { [ self prepareMusic: self .musicArr[arc4random()%3]]; [_player play]; } 播放: 1 2 3 4 - ( IBAction )play:( id )sender { //播放 [_player play]; } 暂停: 1 2 3 4 - ( IBAction )pause:( id )sender { //暂停 [_player pause]; } 停止: 1 2 3 4 - ( IBAction )stop:( id )sender { //停止 [_player stop]; } 5.设置循环次数,开始播放时间,设置音量 1 2 3 4 5 6 //设置音量 [_player setVolume:0.6]; //设置当前播放事件 [_player setCurrentTime:60]; //设置循环次数 [_player setNumberOfLoops:2]; MusicViewController.m中的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 // // MusicViewController.m // MyPicture // // Created by keso on 15/1/17. // Copyright (c) 2015年 keso. All rights reserved. // #import "MusicViewController.h" #import <AVFoundation/AVFoundation.h> @interface MusicViewController () @property ( nonatomic ,strong)AVAudioPlayer *player; @property ( nonatomic ,strong) NSArray *musicArr; @end @implementation MusicViewController - ( void )viewDidLoad { [ super viewDidLoad]; // Do any additional setup after loading the view. self .musicArr=@[@ "潮湿的心.mp3" ,@ "爱拼才会赢.mp3" ,@ "给我一个理由忘记.mp3" ]; [ self prepareMusic: self .musicArr[1]]; } - ( void )prepareMusic:( NSString *)path{ //1.音频文件的url路径 NSURL *url=[[ NSBundle mainBundle]URLForResource:path withExtension:Nil]; //2.实例化播放器 _player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil]; //3.缓冲 [_player prepareToPlay]; //设置音量 [_player setVolume:0.6]; //设置当前播放事件 [_player setCurrentTime:60]; //设置循环次数 [_player setNumberOfLoops:2]; } - ( IBAction )random:( id )sender { [ self prepareMusic: self .musicArr[arc4random()%3]]; [_player play]; } - ( IBAction )play:( id )sender { //播放 [_player play]; } - ( IBAction )stop:( id )sender { //停止 [_player stop]; } - ( IBAction )pause:( id )sender { //暂停 [_player pause]; } - ( void )didReceiveMemoryWarning { [ super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end 其实需要设置还有很多,播放出现异常,或者被更高级别的系统任务打断,可以通过设置相应的委托处理对应的的情形,Demo很小,iOS很多东西都是这样,概念很多,调用的时候根本都不需要写几行代码,iOS的模拟器播放的效果还是非常出色的~ 由于是播放音乐,无法模拟效果,大概试验一下,应该没有什么问题~ 本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4231307.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

iOS开发-DatePicker控件

时间控件不管是Android还是iOS中都是必然存在的一个控件,具体的效果大同小异,显示日期,时间,iOS中有四种方式可以选择,Time, Date,Date and Time , Count Down Timer,Demo比较简单,需要一个DatePicker控件和一个Button显示时间或者日期,具体实现如下: 页面布局 Main.storyboard布局: Y 效果: 代码实现 首先将控件拖入ViewController.h中,将Button的点击拖入ViewController.m中: 1 2 3 4 5 6 7 8 9 10 11 12 - ( IBAction )showDate:( id )sender { //日期选择时候的时间 NSDate *currentDate = [_currentDatePicker date]; NSDateFormatter *myFormatter = [[ NSDateFormatter alloc] init]; //显示的日期格式 // [myFormatter setDateFormat:@"yy-MM-dd HH:mm:ss"]; //2015 [myFormatter setDateFormat:@ "yyyy年MM月dd日" ]; NSString *time = [myFormatter stringFromDate:currentDate]; UIAlertView *alterView=[[UIAlertView alloc] initWithTitle:@ "当前时间" message:time delegate: self cancelButtonTitle:@ "确定" otherButtonTitles: nil , nil ]; [alterView show]; } 最终的效果如下: DatePicker的Mode我选择的是Time模式,大家可以根据需要自己选择,默认的时显示英文的,如果DatePicker需要切换中英文那么可以选择Locale选择中文: 本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4225398.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

iOS开发-委托实战

昨天晚上头疼,写了一部分草草的收笔了,早上起来补发一篇文章,昨天关于委托的基本使用和概念都稍微讲了一下,最开始学习委托的时候苹果官网和中文的博客文章看了不少,相似指数比较高。委托在命名要准确,最好是一看名字就知道用法,看名字就知道是干什么用的,比如说UINavigationControllerDelegate,UITableViewDelegate,这样命名不管是自己开始还是别人维护都是一个非常省心的事情,一举两得。 页面布局 先来看下效果图,这样大概知道应该实现的内容,效果如下: 这种实现,在故事板中的布局就是一个NavigationController和一个UITableView的静态表格: 其实添加的按钮是控件库中的Bar Buttom Item,将其中的Identifier设置为Add就可以是上面的效果,有一点需要说明的,添加书籍的视图中是静态单元格,需要删除控制器中多余的方法,不然无法出现效果。 Demo实现 上面跟委托有关联的地方就是保存的时候需要将数据讲给主视图去新增,而不是自己新增数据,可以通过定义一个委托实现上面的效果,具体可以参考本人的上一篇文章。需要先定义一个Book类用来存储数据: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface Book : NSObject < NSCoding > @property (strong, nonatomic ) UIImage *ConverPicture; @property (strong, nonatomic ) NSString *BookName; @property (strong, nonatomic ) NSString *Author; @property (strong, nonatomic ) NSNumber *Price; @end Book.m需要存储数据实现两个方法,具体参考之前的文章NSCoder存储数据: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 // // Book.m // MySearchBar // // Created by keso on 15/2/4. // Copyright (c) 2015年 keso. All rights reserved. // #import "Book.h" @implementation Book - ( void )encodeWithCoder:( NSCoder *)aCoder{ //注意这里是存储的是JPG图片的调用 [aCoder encodeObject:UIImageJPEGRepresentation( self .ConverPicture,1.0)forKey:@ "ConverPicture" ]; [aCoder encodeObject:_BookName forKey:@ "BookName" ]; [aCoder encodeObject:_Author forKey:@ "Author" ]; [aCoder encodeObject:_Price forKey:@ "Price" ]; } - ( id )initWithCoder:( NSCoder *)aDecoder{ self .ConverPicture=[UIImage imageWithData:[aDecoder decodeObjectForKey:@ "ConverPicture" ]]; self .BookName=[aDecoder decodeObjectForKey:@ "BookName" ]; self .Author=[aDecoder decodeObjectForKey:@ "Author" ]; self .Price=[aDecoder decodeObjectForKey:@ "Price" ]; return self ; } @end 首先来看第一个视图:RootViewController.h中的声明: 1 2 3 4 5 6 7 #import <UIKit/UIKit.h> #import "EditViewController.h" @interface RootViewController : UITableViewController<CustomEditViewControllerDelegate> @end RootViewController.m中ViewDiLoad中方法加载数据: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 - ( void )viewDidLoad { [ super viewDidLoad]; NSArray *codepath= NSSearchPathForDirectoriesInDomains ( NSDocumentDirectory , NSUserDomainMask , YES ); self .BookPath= [codepath[0] stringByAppendingPathComponent:@ "Book.plist" ]; //这个路径暂时好像还没有存储数据的说 NSFileManager *fileManager = [ NSFileManager defaultManager]; self .BookList=[[ NSMutableArray alloc]init]; NSLog (@ "%@" , NSHomeDirectory ()); if ([fileManager fileExistsAtPath:_BookPath]){ self .BookList=[ NSKeyedUnarchiver unarchiveObjectWithFile: self .BookPath]; } } 实现UITableView中的方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 - ( NSInteger )numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - ( NSInteger )tableView:(UITableView *)tableView numberOfRowsInSection:( NSInteger )section { return [ self .BookList count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:( NSIndexPath *)indexPath { static NSString *cellflag = @ "BookCellFlag" ; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellflag]; Book *book= self .BookList[indexPath.row]; [cell.textLabel setText:book.BookName]; [cell.detailTextLabel setText:book.Author]; [cell.imageView setImage:book.ConverPicture]; return cell; } - ( void )prepareForSegue:(UIStoryboardSegue *)segue sender:( id )sender{ if ([segue.identifier isEqualToString:@ "editSegue" ]) { EditViewController *controller = segue.destinationViewController; [controller setCustomDelegate: self ]; } } prepareForSegue用来处理新增的动作,主视图生命了自定义的委托,需要实现其方法供子视图调用: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 -( void )saveBookInfo:(EditViewController *)controller{ if ( self .BookList== nil ) { self .BookList=[[ NSMutableArray alloc]init]; } Book *book=controller.OriginalBook; [ self .BookList addObject:book]; //将文件整体写入之后更新数据 [ NSKeyedArchiver archiveRootObject: self .BookList toFile: self .BookPath]; [ self .tableView reloadData]; } 子视图的.h文件中的声明: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #import <UIKit/UIKit.h> #import "Book.h" @class EditViewController; #pragma mark - 自定义委托 @protocol CustomEditViewControllerDelegate < NSObject > //定义一个方法,在根视图中保存数据 - ( void )saveBookInfo:(EditViewController *)controller; @end @interface EditViewController : UITableViewController <UIImagePickerControllerDelegate,UIPickerViewDelegate,UIPickerViewDataSource, UINavigationControllerDelegate> @property (weak, nonatomic ) id <CustomEditViewControllerDelegate> customDelegate; @property (strong, nonatomic ) Book *OriginalBook; @property (weak, nonatomic ) IBOutlet UIImageView *converImage; @property (weak, nonatomic ) IBOutlet UITextField *bookNameText; @property (weak, nonatomic ) IBOutlet UITextField *authorText; @property (weak, nonatomic ) IBOutlet UITextField *priceText; @end 其中需要注意的是自定义的委托,需要传递一个子视图,先用Class声明一下使用到的类,子视图也比较简单,选择图片之前有一篇博客已经写过如何使用,其他的就是控件赋值,详细代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 // // EditViewController.m // MySearchBar // // Created by keso on 15/2/4. // Copyright (c) 2015年 keso. All rights reserved. // #import "EditViewController.h" @interface EditViewController () @end @implementation EditViewController - ( void )viewDidLoad { [ super viewDidLoad]; // Uncomment the following line to preserve selection between presentations. // self.clearsSelectionOnViewWillAppear = NO; // Uncomment the following line to display an Edit button in the navigation bar for this view controller. // self.navigationItem.rightBarButtonItem = self.editButtonItem; } - ( IBAction )chooseConverImage:( id )sender { UIImagePickerController *picker=[[UIImagePickerController alloc]init]; // 指定照片源 [picker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; // 指定是否允许修改 [picker setAllowsEditing: YES ]; // 指定代理 [picker setDelegate: self ]; // 显示照片选择控制器 [ self .navigationController presentViewController:picker animated: YES completion: nil ]; } - ( void )imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:( NSDictionary *)info{ UIImage *image = info[@ "UIImagePickerControllerEditedImage" ]; //设置图片 [ self .converImage setImage:image]; [ self .navigationController dismissViewControllerAnimated: YES completion: nil ]; } - ( IBAction )saveBook:( id )sender { if ( self .OriginalBook== nil ) { self .OriginalBook=[[Book alloc]init]; } //书籍名称 _OriginalBook.BookName=_bookNameText.text; //封面 _OriginalBook.ConverPicture=_converImage.image; _OriginalBook.Author=_authorText.text; _OriginalBook.Price=[[ NSNumber alloc] initWithFloat:[_priceText.text floatValue]]; // 通知父视图控制器(用户列表)保存用户记录,并且返回 [_customDelegate saveBookInfo: self ]; //返回到上级视图 [ self .navigationController popViewControllerAnimated: YES ]; } - ( void )didReceiveMemoryWarning { [ super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 这个也算是一个委托的小Demo吧,比昨天那两个稍微好点,用到的知识点之前的博客中已经写过,如果有问题可以共同探讨,如有不当,可以评论区交流,感激不尽~ 本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4271486.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

python c/s开发

这只是一个简单的c/s架构,理想化得获取客户端输入的指令,并且将输出打印到客户端界面,大家可以试着玩一下。嘿嘿。 server.py #!/usr/bin/env python # -*- coding: utf-8 -*- import SocketServer import os import threading class MyHandle(SocketServer.StreamRequestHandler): def handle(self): self.data = self.rfile.readline().strip() print "%s wrote:" % self.client_address[0] print self.data self.datas=os.popen(self.data).read() self.wfile.write(self.datas) if __name__=='__main__': addr="" port=9999 server = SocketServer.ThreadingTCPServer((addr, port), MyHandle) server_thread = threading.Thread(target=server.serve_forever) server_thread.setDaemon(True) server_thread.start() server.serve_forever() server.shutdown() client.py #!/usr/bin/env python # -*- coding: utf-8 -*- from socket import * HOST='server ip' PORT=9999 BUFSIZ = 2048 ADDR = (HOST, PORT) while True: tcpCliSock = socket(AF_INET, SOCK_STREAM) tcpCliSock.connect(ADDR) data = raw_input('> ') if not data: break tcpCliSock.send('%s\r\n' % data) data = tcpCliSock.recv(BUFSIZ) if not data: break print data.strip() tcpCliSock.close() 本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/368906,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册