分类目录归档:Code

JavaScript实现可重复倒数读秒

动态提示能很好的提高一个网站的人性化程度。比如下载页面,很多网站都有倒数秒的功能 “5..4..3..2..1秒钟后即将开始下载”等这样动态提示语。有时候的需求只需执行一次不用清零,而有时我们需要反复的执行倒数秒的功能。

利用 JavaScript 代码,可以重复实现倒数读秒功能。

核心的 JavaScript 语法是:

setInterval(code,millisec[,”lang”])

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

对于只需一次调用的倒数读秒:

对于下载页面,跳转页面等,只需一次倒数读秒的,可以直接使用一次性代码即可:

在需要引用的地方插入HTML代码:

<p><span id="count-down">5</span>秒钟后自动返回文章页面</p>

其次,在网页底部引用 JavaScript:

<script type="text/javascript">
var seconds = 4; //倒数5秒 4=5-1
    setInterval(function() {
    if (seconds > 0) { //若要倒数至0秒 seconds >= 0
        document.getElementById("count-down").innerHTML = seconds; //打印秒
        seconds-=1;
    } else {
        clearInterval(timer); //防止多次累加
        return;
    }
}, 1000); //每1000毫秒=1秒钟执行一次 t54321()函数 
</script>

演示 Demo

对于#需要重复调用的倒数读秒:

在需要引用的地方插入HTML代码:

<a onclick="t54321()"><span id="count-down">5</span>秒钟后自动关闭</a>

然后,在网页底部引用 JavaScript:

<script type="text/javascript">
    function t54321() {
    var seconds = 4; //倒数5秒 4=5-1
    setInterval(function() {
        if (seconds > 0) { //若要倒数至0秒 seconds >= 0
           document.getElementById("count-down").innerHTML = seconds; //打印秒
           seconds-=1;
        } else {
           clearInterval(timer); //防止多次累加
           seconds = 4; //重置倒数秒变量
           return;
        }
    }, 1000); //每1000毫秒=1秒钟执行一次 t54321()函数
 }
</script>

演示 Demo

通过 onclick=“t54321()” 点击反复调用该函数。当然,你也可以使用其他交互方式进行调用操作。

继续阅读JavaScript实现可重复倒数读秒

Pitch Perfect

Pitch Perfect 是一款简单的 iOS应用,能够将你的声音处理成6中不同风格的文件并播放出来。共有 Fast /  Slow, High / Low Pitch, Echo / Reverb 6种。

Pitch Perfect 的诞生离不开 Swift 3.x 以及 Cocoa Touch。我的第一款 iOS App 已经编写完成,虽然这不太可能拿上 Apple Design Awards,但也总是迈出了第一步了,成为了一名小小的 iOS 开发者 :-)

IDE

Xcode 8.3.3

macOS Sierra 10.12.6

Pitch Perfect 是一个只有2个View的简单 iOS App,在 Main.storyboard 文件中,是这样 segue 链接的。

当录制完⏺️一段声音之后,App 会自动的跳转到 View 2,进一步操作,将声音转换为 6种风格并播放。Fast /  Slow, High / Low Pitch, Echo / Reverb.

运行图片:

源代码已经发布至 Github:点击跳转

继续阅读Pitch Perfect

Swift3获取系统系统间并比较

在Swift3.x 版本中一个很不错的简化,就是将获取系统时间由NSDate()修改为Date(),可千万不要认为只是改了个名称这样简单,这使得代码更加简洁。

使用Date()获取当前系统时间:

let date = Date()

分离年月日:

let calendar = Calendar.current
var year = calendar.component(.year, from: date)
var month = calendar.component(.month, from: date)
var day = calendar.component(.day, from: date)

分离后,既可以使用一般的语句进行时间的比较。

以下是判定 今天是不是我生日 的代码实例(Playground):

//: Playground - noun: a place where people can play

import UIKit
let myBirthday = (1996, 5, 3)
var birthYear = 0

let date = Date()
let calendar = Calendar.current
var year = calendar.component(.year, from: date)
var month = calendar.component(.month, from: date)
var day = calendar.component(.day, from: date)

if month == myBirthday.1 {
    if day == myBirthday.2 {
        birthYear = year - 1996
        print("It's my \(birthYear)'s birthday 👑")
    }
}

继续阅读Swift3获取系统系统间并比较

Swift3函数,排除参数为blank

Swift 的 func,在传递参数的过程,如何排除 空值 blank?这是我在 Udacity 的 Swift Problem Set 中的一道作业题目。

Swift Problem Set 中的第16道题目如下:

Exercise 16

The function ‘beginsWithVowel’ should take a single ‘String’ parameter and return a ‘Bool’ indicating whether the input string begins with a vowel. If the input string begins with a vowel return true, otherwise return false.
First, you will want to test if the input string is “”. If the input string is “”, then return false. Otherwise, you can access the first character of a ‘String’ by using ‘nameOfString.characters[nameOfString.startIndex]’.

输入一个单词,如果单词开头为元音(A, E, I, O, U),则返回 Bool类型 为 true;如果单词开头为辅音,则返回 Bool类型 为 false;如果参数为 “” 空值,返回为false。

以下是检验样例:

beginsWithVowel(letter: "Apples")         // true
beginsWithVowel(letter: "pIG")             // false
beginsWithVowel(letter: "oink")            // true
beginsWithVowel(letter: "udacity")        // true

//Test if the input string is "". If the input string is "", then return false.
beginsWithVowel(letter: "")                  // false

最先想到的就是用:

if letter == nil

但是,Xcode 编译器提示了警告,非选择性比较字符串的值为nil始终返回false。

先来试试,

if letter == “”

既然 Swift 不允许 if letter == “”,那就从反面出发:

if letter != “”

用 if-else 语句,用 else 来否定 blank:

此方法在 Udacity 上的审阅评价:

 

继续阅读Swift3函数,排除参数为blank

通过Windows错误报告诊断错误原因

在使用 Windows 的时候,可能会遇到一些程序打开“已经停止工作”的原因,而系统并为能够给出详细的错误原因,这时候,我们可以使用 Windows 错误报告,来查找程序冲突的原因。

Windows 可能会因为多种因素导致软件的停止工作。譬如,比较出名的 刺客信条:大革命(Assassin’s Creed : Unity)与 Windows XAudio2_7.dll 文件冲突,导致程序运行15分钟左右后进程结束。

此时,Windows 的对话栏不会告诉你导致其问题的具体原因,只会给出你一个错误提醒,但是这并不是什么有价值的信息。

但是,我们可以利用 Windows 系统信息的错误报告,来找到原因,并帮助我们解决问题。

运行 中输入,打开 系统信息

msinfo32 ⏎

软件环境 \ Windows 错误报告

(Software Environment \ Windows Error Reporting)

选项卡中,搜索错误报告:

详细信息 中,我们可以找到导致程序停止工作的原因是 XAudio2_7.dll 未加载。从而帮助我们,临时删除 XAudio2_7.dll 文件来保证程序的稳定运行。

所以,对于其他的程序停止工作的问题,我们都可以用系统信息中的Windows错误报告,找出具体的原因,帮助我们更精确的找出问题,并解决问题。

继续阅读通过Windows错误报告诊断错误原因