ActionSwift3 2.100

ActionSwift3 2.100

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新发布2017年10月
SwiftSwift 版本4.0
SPM支持 SPM

Craig Grummitt 维护。



ActionSwift 3.0

Swift 中的 ActionScript 3 SDK

ActionSwift.png

Swift 真是太强大了 - 但你有没有怀念过 ActionScript 3.0 的那个年代?DisplayObjects、Sprites、MovieClips、EventDispatchers 的那个年代 - 以及谁会忘记 gotoAndPlay?现在,你可以利用 Swift 语法的力量享受原生 iOS 开发,但同时还使用 AS3 SDK!这怎么可能?这是异端吗?

ActionSwift3

在幕后,ActionSwift3 基于 SpriteKit 框架建立,但 ActionSwift 3 SDK 基于 AS3 SDK 的熟悉类

  • DisplayObject
  • InteractiveObject
  • DisplayObjectContainer
  • Sprite
  • Graphics
  • Stage
  • MovieClip
  • SimpleButton
  • TextField
  • TextFormat
  • Sound
  • SoundChannel
  • EventDispatcher
  • Event
  • EventHandler
  • Touch
  • TouchEvent(在触摸环境中,TouchEvent 比 MouseEvent 更合适使用)

还包含了来自 这里 的便利缓动类。

API 文档可在 cocoadocs 上找到

您可以在 这里 找到一个教程 - Swift API for the Flash Guy

SwiftAPIfortheFlashGuySmall.png

安装

ActionSwift 通过 CocoaPods 提供。要安装它,请将以下内容添加到您的 Podfile 中:(静态 Swift 框架需要 iOS 8)
别忘了将 Pod 引入到您想使用的 Pod 中

use_frameworks!
platform :ios, '8.0'
pod 'ActionSwift3'

或者,如果您想访问示例项目,可以克隆 GitHub 项目 这里

import ActionSwift3

ActionSwift

ActionSwift 是一个您可以用来玩 ActionSwift3 的示例项目。从 GameViewController.swift 开始。

GameViewController 执行以下操作:

  1. 设置舞台。
  2. 创建一个 'play' sprite,它画了一个包含三角形的圆。
  3. 创建一个 'stop' sprite,它画了一个包含矩形的矩形。
  4. 创建一个 movieclip,它显示了一个由指向 'images.atlas' 文件夹中图像的字符串数组定义的纹理。
  5. 展示了如何通过为所有三个 sprite 设置点击来创建事件监听器。'stop' 和 'play' sprite 停止和播放 movieclip。触摸 movieclip 激活拖放操作。

screenshot.png

如何使用 ActionSwift3

以下是一些示例代码,可以帮助您了解如何使用 ActionSwift3。

Stage

首先,您需要在包含SKView的ViewController中设置场景。如果您的项目设置为Game-SpriteKit项目,则这项操作会自动为您完成。

let stage = Stage(self.view as! SKView)

Sprite

现在,您可以调用场景上的熟悉方法。例如,您可以实例化一个精灵,在其绘图属性上绘制一个矩形,然后将此精灵添加到场景中。

let sprite = Sprite()
sprite.graphics.beginFill(UIColor.redColor())
sprite.graphics.drawRect(10,10,100,44)
sprite.name = "shapes"
stage.addChild(sprite)

MovieClip

要创建影片剪辑,您需要在项目中包含一个名为“atlas”的文件扩展名文件夹内的图片(例如,“images.atlas”)。这将自动生成一个纹理图集。设置一个图片文件名数组的集合,并在实例化MovieClip时传递它们。这些现在将成为您的影片剪辑的“帧”,您可以调用熟悉的方法 - gotoAndPlay(),gotoAndStop(),stop()和play()。使用Stage.size来获取设备的尺寸。另外,x=0,y=0是场景的左上角。太棒了!

let walkingTextures = ["walking1","walking2","walking3"]
let movieClip = MovieClip(textureNames: walkingTextures)
movieClip.x = 0
movieClip.y = Stage.size.height - movieClip.height
stage.addChild(movieClip)

SimpleButton

您可以创建一个具有上和下状态的单按钮对象(在触摸屏上使用时,多余的状态没有太多意义!)您可以使用具有图形对象上形状的精灵或具有纹理的影片剪辑作为状态。

let play = SimpleButton(upState: playUpState, downState: playDownState)
stage.addChild(sprite)

TextField

使用熟悉的语法创建一个文本字段。使用TextField类构建文本字段的主体,然后再通过使用TextFormat类应用文本格式来对默认文本格式属性进行文本格式处理。

let text = TextField()
text.width = 200
text.text = "Salutations to you, world"

let textFormat = TextFormat(font: "ArialMT", size: 20, leading: 20, color: UIColor.blackColor(), align:.Center)
text.defaultTextFormat = textFormat

stage.addChild(text)

Sound

使用声音播放项目中包含的声音 - 但有一个很大的区别 - 现在,除了mp3之外还支持wav文件。《万岁!》循环音频或从文件中的某个点播放音频。根据奇特的AS3 API,使用SoundChannel停止声音。

sound = Sound(name: "ButtonTap.wav")
sound.play()

EventDispatcher

就像您预期的那样,Sprite、SimpleButton和MovieClip都会调度事件。由于Swift无法检查两个函数之间的等价性,因此除了EventHandler类外,还存储了EventHandler以及表示EventHandler的字符串,可以检查其等价性。例如,以下是如何设置enterFrame事件处理器的示例。

movieClip.addEventListener(EventType.EnterFrame.rawValue, EventHandler(enterFrame, "enterFrame"))
func enterFrame(event:Event) -> Void {
    trace("This is called every frame")
}

跟踪

哦,对,跟踪又回来了!

trace("This is the most amazing thing I've ever seen, trace is back! How did they do this?")

增强功能

ActionSwift3是一个正在进行中的项目,欢迎您提出贡献!

增强功能的想法

  • 日期
  • XML
  • 在Graphics上添加更多复杂形状

更新

1.1

  • 添加了int和Boolean数据类型

1.2

  • 添加了TextField
  • 解决了场景更新未传播的问题
  • 添加了许可协议

1.3

  • 添加了SimpleButton
  • 添加了支持十六进制的UIColor扩展

1.4

  • 添加了Sound和SoundChannel

1.5

  • 更新为Swift 2

1.6

  • 解决了标签未注册点击事件的问题
  • 解决了旋转问题

1.7

  • 更新为Swift 2.3

2.0

  • 更新为Swift 3.0
    2.1
  • 更新为Swift 4.0

致谢

  • Kyoux创作的“行走动画”
  • 由Adobe Systems Inc.创作的“ActionScript”
  • 由Apple Inc.创作的“Swift”
  • 由Apple Inc.创作的“Swift标志”