当前位置:  编程技术>移动开发
本页文章导读:
    ▪Activity的四种加载形式        Activity的四种加载模式 Activity有四种加载模式: standard   每次都创建了该Activity的新实例 singleTop singleTop要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实.........
    ▪ 2012-三-15        2012-3-15 这几天一直在Starling引擎的基础上完善游戏逻辑部分,但是当把所有资源铺在stage3D上后发现这帧率不像是一个拥有硬件加速所应该有的样子。电脑帧率只有20帧,更别说iPad2上的了.........
    ▪ 播发音频 AVAudioPlayer(实例)       播放音频 AVAudioPlayer(实例) 1. AVFoundation   Build Phases => Link Binary With Libraies => + => AVFoundation.framework => add   firstviewcontroller.h #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> .........

[1]Activity的四种加载形式
    来源: 互联网  发布时间: 2014-02-18
Activity的四种加载模式

Activity有四种加载模式:

  • standard   每次都创建了该Activity的新实例
  • singleTop singleTop要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不发送给新的实例。singleTop模式,可用来解决栈顶多个重复相同的Activity的问题。
  • singleTask 当intent到来,需要创建singleTask模式Activity的时候,系统会检查栈里面是否已经有该Activity的实例。如果有直接将intent发送给它。
  • sigleInstance 多个Task共享一个Activity(singleTask是在一个task中共享一个Activity)

 

详细见: http://marshal.easymorse.com/archives/2950


    
[2] 2012-三-15
    来源: 互联网  发布时间: 2014-02-18
2012-3-15
这几天一直在Starling引擎的基础上完善游戏逻辑部分,但是当把所有资源铺在stage3D上后发现这帧率不像是一个拥有硬件加速所应该有的样子。电脑帧率只有20帧,更别说iPad2上的了。一般而言iPad2和PC(4核3.2GHZ 4G)相比,帧率一般要少一半。
于是便进入痛苦的代码优化时间。花了整整一个下午,寻找并且优化了两个地方。
其一就是对于addChild和removeChild这两个函数的频繁调用。我的频繁是每一帧都在大量的调用,大量指的是一个MovieClip下的所有显示对象(这里的MovieClip早已不是ActionScript3所提供的2DMovieClip,而是继承自Starling的Sprite自制的MovieClip,使其拥有3D加速功能)。频繁的调用addChild和removeChild会很影响性能。我把这部分的代码优化后,帧率从20帧提高到了30帧。但是还不够,如果PC上运行是30帧iPad2仍然性能很低。在接下来的几个小时里我发现几个赋值语句的执行时间特别长。我将它们注释之后发现帧率突然稳定在60帧。这让我很奇怪。经过多次实验发现ActionScript3对于XML的操作效率是比较低的。比如XML.attribute(),我后来把XML全部进行预处理,就是在loading阶段便把XML所描述的数据结构使用Object来替代。让缓慢的操作全部轰到loading阶段并且只执行一次。
经过这两段代码的优化后发现PC帧率达到58fps,iPad2帧率达到26帧。基本满足游戏的需要。
另外iPad1的性能是iPad2的一半。适应Air3.2在iPad1上稍微做复杂点的游戏很容易出现内存爆掉的情况。

总体感觉ActionScript其实比C++这种语言更需要深厚的基本功,否则制作对性能要求高的东西,在优化阶段会很摸不到头脑。

    
[3] 播发音频 AVAudioPlayer(实例)
    来源: 互联网  发布时间: 2014-02-18
播放音频 AVAudioPlayer(实例)

1. AVFoundation

 

Build Phases => Link Binary With Libraies => + => AVFoundation.framework => add

 

firstviewcontroller.h

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>

@interface FirstViewController : UIViewController
{  
    __weak IBOutlet UILabel *label;
    AVAudioPlayer *player;
}

- (IBAction)toplay:(id)sender;

@end
 

firstviewcontroller.m

- (IBAction)toplay:(id)sender 
{
    NSURL  *url = [NSURL fileURLWithPath:[NSString  stringWithFormat:@"%@/test.mp3",  [[NSBundle mainBundle]  resourcePath]]];
    
    NSError  *error;
    player  = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
       
    player.numberOfLoops = -1;
    [player play];
    
    [label setText:@"Play ..."];
}

 

或者:

 

NSString *path = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"mp3"]; 
NSError  *error; 
player = [[AVAudioPlayer alloc]initWithContentsOfURL:[[NSURL alloc]initFileURLWithPath:path]error:&error]; 
[player prepareToPlay];
player.numberOfLoops = -1;
[player play];
 

test.mp3 拖放到 Supporting Files 文件夹。

 

播放,暂停和停止

[player play];  //播放
[player pause]; //暂停
[player stop];  //停止
 

更多功能:

 

1. 音量:

player.volume=0.8;//0.0~1.0之间  
 

2. 循环次数

player.numberOfLoops = 3;//默认只播放一次 负数(-1)为无限循环
 

3.播放位置

player.currentTime = 15.0;//可以指定从任意位置开始播放 

 

3.1 显示当前时间

NSLog(@"%f seconds played so  far", player.currentTime);

 

4.声道数

NSUInteger channels = player.numberOfChannels;//只读属性 
 

5.持续时间

NSTimeInterval duration = player.dueration;//获取采样的持续时间  

 

6.仪表计数

player.meteringEnabled = YES;//开启仪表计数功能
[ player updateMeters];//更新仪表读数
//读取每个声道的平均电平和峰值电平,代表每个声道的分贝数,范围在-100~0之间。
for(int i = 0; i<player.numberOfChannels;i++){
float power = [player averagePowerForChannel:i];
float peak = [player peakPowerForChannel:i];
}
 

7. 初始化播放器  

[player prepareToPlay];

 

8. 判断是否正在播放

[player isPlaying]

 

9、代理方法

 

          加入播放出现异常,或者被更高级别的系统任务打断,我们的程序还没来得及收场就挂了,怎么办?不急,我们可以通过几个委托方法很好地处理所有的情形。

首先给player设置委托是必须的:

 

player.delegate = self;  
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer*)player successfully:(BOOL)flag{
    //播放结束时执行的动作
}
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer*)player error:(NSError *)error{
    //解码错误执行的动作
}
- (void)audioPlayerBeginInteruption:(AVAudioPlayer*)player{
    //处理中断的代码
}
- (void)audioPlayerEndInteruption:(AVAudioPlayer*)player{
    //处理中断结束的代码
}
  

 

 

参考:

http://blog.csdn.net/xys289187120/article/details/6595919

http://blog.csdn.net/iukey/article/details/7295962

 

视频:

http://www.youtube.com/watch?v=kCpw6iP90cY

 

 

2. AudioToolbox

 

Build Phases => Link Binary With Libraies => + => AudioToolbox.framework => add

 

firstviewcontroller.h

#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioToolbox.h>

@interface FirstViewController : UIViewController
{  
}

- (IBAction)toplay:(id)sender;

@end
 

firstviewcontroller.m

- (IBAction)toplay:(id)sender
{
    CFBundleRef mainBundle = CFBundleGetMainBundle();
    CFURLRef soundFileURLRef;
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"sound1", CFSTR ("wav"), NULL);
    
    UInt32 soundID;
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
    AudioServicesPlaySystemSound(soundID);
}
 

视频:

http://www.youtube.com/watch?v=lSJhYx28Krg&feature=youtu.be

 

 

 

 

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3