Pages

Tag Archives: as3isolib

I’ve been working on a facebook game called Veer (launched on January, 4th, 2012) for my client, Handson Entertainment . In this game, you play as a reporter, like Lois Lane, working for a news station, Veer. You begin your journey in a remote island called “Tuto Island” where you learn the basics of the game and then, as you level up, you will be taken to cities/places such as Paris, Monaco, Zanzibar, Beijing, etc. to hunt for interesting news. Based on your locations and levels/experience, you will have different missions/tasks from finding a missing colleague, locating a run-away celebrity, and so on. Also, you get to visit famous landmarks like The Eiffel and Louvre Museum in Paris.

In this article, I will show you how to make a rotatable IsoGroup in As3Isolib. Well, I don’t actually rotate the group but instead, I reposition the group’s children so that the group appears to be rotated.

If you’re new to As3Isolib, you can learn a bit about the basics here. If you know the library already, you might want to skip step 1.

One of the requirements of my latest as3isolib project was to have “realistic” looks for all objects. The only way to achieve this is use bitmap assets so I paid a friend who’s really good at making animated 3d models to create animated assets for me and render them as PNG sprite sheets. Another thing I had to do was blit the sheets but there’s no built-in bitmap blitter class in as3isolib that I could use so I wrote the SpriteSheet class below.

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

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

packageiso

{

import de.polygonal.ds.Array2;

import iso.Directions;

import flash.display.Bitmap;

import flash.display.BitmapData;

import flash.display.DisplayObject;

import flash.display.Sprite;

import flash.events.Event;

import flash.geom.Point;

import flash.geom.Rectangle;

import flash.utils.getTimer;

/**

* Bitmap-blitter. The source must be a bitmap or sprite with 8 rows representing 8 directions.

* Each row contains an animation cycle where column 0 is for idle state.

*

* @author Anggie Bratadinata

*/

publicclassSpriteSheetextendsSprite

{

//rendering interval

publicstaticconstRENDER_INTERVAL:Number=64;

//bitmap frames

protectedvar_bitmapArray:Array2;

//sheet source

protectedvar_source:DisplayObject;

//frame size

protectedvar_frameWidth:Number;

protectedvar_frameHeight:Number;

//the rendered bitmap

protectedvar_frameBitmap:Bitmap;

protectedvar_frameRect:Rectangle;

//current facing direction

protectedvar_direction:String;

//current frame row

protectedvar_currentRow:Array;

protectedvar_currentColNum:Number;

//render timer

protectedvar_oldTime:Number=0;

protectedvar_renderInterval:Number;

//is the south-facing sequence on the first row (true) or not (false)?

Some folks had asked about drag-and-drop mechanism in as3isolibdiscussion group. While there’s no such feature built-in in the library, it’s not hard to write it yourself.

So here’s a super simple class that provides that mechanism, called DragManager. I borrowed the idea from Flex’s DragManager. Note that this class is really a simple one and it doesn’t respect “grid” so you’ll have to modify it if you want to use it in a grid-based isometric space. Trust me, it’s not too hard