mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[haxe] Apply fixes to target hl (HashLink).
This commit is contained in:
parent
67d38adebf
commit
264ac86456
@ -25,73 +25,72 @@
|
|||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
package;
|
package;
|
||||||
|
|
||||||
|
import openfl.events.Event;
|
||||||
|
import starling.events.Event as StarlingEvent;
|
||||||
import flixelExamples.FlixelState;
|
import flixelExamples.FlixelState;
|
||||||
import starlingExamples.BasicExample;
|
import starlingExamples.BasicExample;
|
||||||
import starlingExamples.Scene.SceneManager;
|
import starlingExamples.Scene.SceneManager;
|
||||||
import starling.core.Starling;
|
import starling.core.Starling;
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
import flixel.FlxGame;
|
import flixel.FlxGame;
|
||||||
|
|
||||||
import openfl.display.Sprite;
|
import openfl.display.Sprite;
|
||||||
import openfl.text.TextField;
|
import openfl.text.TextField;
|
||||||
import openfl.text.TextFormat;
|
import openfl.text.TextFormat;
|
||||||
import openfl.events.MouseEvent;
|
import openfl.events.MouseEvent;
|
||||||
|
|
||||||
import openfl.geom.Rectangle;
|
import openfl.geom.Rectangle;
|
||||||
import starling.events.Event;
|
|
||||||
|
|
||||||
class Main extends Sprite {
|
class Main extends Sprite {
|
||||||
private var background:Sprite;
|
private var background:Sprite;
|
||||||
private var flixelButton:Sprite;
|
private var flixelButton:Sprite;
|
||||||
private var starlingButton:Sprite;
|
private var starlingButton:Sprite;
|
||||||
private var uiContainer:Sprite;
|
private var uiContainer:Sprite;
|
||||||
|
|
||||||
private static inline var ratio = 4;
|
private static inline var ratio = 4;
|
||||||
private static inline var STAGE_WIDTH:Int = 100 * ratio;
|
private static inline var STAGE_WIDTH:Int = 100 * ratio;
|
||||||
private static inline var STAGE_HEIGHT:Int = 200 * ratio;
|
private static inline var STAGE_HEIGHT:Int = 200 * ratio;
|
||||||
private static inline var BUTTON_WIDTH:Int = 80 * ratio;
|
private static inline var BUTTON_WIDTH:Int = 80 * ratio;
|
||||||
private static inline var BUTTON_HEIGHT:Int = 40 * ratio;
|
private static inline var BUTTON_HEIGHT:Int = 40 * ratio;
|
||||||
private static inline var BUTTON_SPACING:Int = 20 * ratio;
|
private static inline var BUTTON_SPACING:Int = 20 * ratio;
|
||||||
|
|
||||||
public function new() {
|
public function new() {
|
||||||
super();
|
super();
|
||||||
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
|
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function onAddedToStage(e:Event):Void {
|
private function onAddedToStage(e:Event):Void {
|
||||||
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
|
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
|
||||||
createUI();
|
createUI();
|
||||||
centerUI();
|
centerUI();
|
||||||
stage.addEventListener(Event.RESIZE, onResize);
|
stage.addEventListener(Event.RESIZE, onResize);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createUI():Void {
|
private function createUI():Void {
|
||||||
uiContainer = new Sprite();
|
uiContainer = new Sprite();
|
||||||
addChild(uiContainer);
|
addChild(uiContainer);
|
||||||
|
|
||||||
background = new Sprite();
|
background = new Sprite();
|
||||||
background.graphics.beginFill(0xA2A2A2);
|
background.graphics.beginFill(0xA2A2A2);
|
||||||
background.graphics.drawRect(0, 0, STAGE_WIDTH, STAGE_HEIGHT);
|
background.graphics.drawRect(0, 0, STAGE_WIDTH, STAGE_HEIGHT);
|
||||||
background.graphics.endFill();
|
background.graphics.endFill();
|
||||||
uiContainer.addChild(background);
|
uiContainer.addChild(background);
|
||||||
|
|
||||||
flixelButton = createButton("Flixel", 0xFF0000);
|
flixelButton = createButton("Flixel", 0xFF0000);
|
||||||
uiContainer.addChild(flixelButton);
|
uiContainer.addChild(flixelButton);
|
||||||
|
|
||||||
starlingButton = createButton("Starling", 0x00FF00);
|
starlingButton = createButton("Starling", 0x00FF00);
|
||||||
uiContainer.addChild(starlingButton);
|
uiContainer.addChild(starlingButton);
|
||||||
|
|
||||||
positionButtons();
|
positionButtons();
|
||||||
|
|
||||||
flixelButton.addEventListener(MouseEvent.CLICK, onFlixelClick);
|
flixelButton.addEventListener(MouseEvent.CLICK, onFlixelClick);
|
||||||
starlingButton.addEventListener(MouseEvent.CLICK, onStarlingClick);
|
starlingButton.addEventListener(MouseEvent.CLICK, onStarlingClick);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createButton(label:String, color:Int):Sprite {
|
private function createButton(label:String, color:Int):Sprite {
|
||||||
var button = new Sprite();
|
var button = new Sprite();
|
||||||
var g = button.graphics;
|
var g = button.graphics;
|
||||||
|
|
||||||
@ -116,58 +115,60 @@ class Main extends Sprite {
|
|||||||
return button;
|
return button;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function positionButtons():Void {
|
private function positionButtons():Void {
|
||||||
var totalHeight = (BUTTON_HEIGHT * 2) + BUTTON_SPACING;
|
var totalHeight = (BUTTON_HEIGHT * 2) + BUTTON_SPACING;
|
||||||
var startY = (STAGE_HEIGHT - totalHeight) / 2;
|
var startY = (STAGE_HEIGHT - totalHeight) / 2;
|
||||||
|
|
||||||
flixelButton.x = (STAGE_WIDTH - BUTTON_WIDTH) / 2;
|
flixelButton.x = (STAGE_WIDTH - BUTTON_WIDTH) / 2;
|
||||||
flixelButton.y = startY + BUTTON_HEIGHT + BUTTON_SPACING;
|
flixelButton.y = startY + BUTTON_HEIGHT + BUTTON_SPACING;
|
||||||
|
|
||||||
starlingButton.x = (STAGE_WIDTH - BUTTON_WIDTH) / 2;
|
starlingButton.x = (STAGE_WIDTH - BUTTON_WIDTH) / 2;
|
||||||
starlingButton.y = startY;
|
starlingButton.y = startY;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function centerUI():Void {
|
private function centerUI():Void {
|
||||||
uiContainer.x = (stage.stageWidth - STAGE_WIDTH) / 2;
|
uiContainer.x = (stage.stageWidth - STAGE_WIDTH) / 2;
|
||||||
uiContainer.y = (stage.stageHeight - STAGE_HEIGHT) / 2;
|
uiContainer.y = (stage.stageHeight - STAGE_HEIGHT) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function onResize(e:Event):Void {
|
private function onResize(e:Event):Void {
|
||||||
centerUI();
|
centerUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function onFlixelClick(e:MouseEvent):Void {
|
private function onFlixelClick(e:MouseEvent):Void {
|
||||||
trace("Launching Flixel game");
|
trace("Launching Flixel game");
|
||||||
destroyUI();
|
destroyUI();
|
||||||
addChild(new FlxGame(640, 480, FlixelState));
|
addChild(new FlxGame(640, 480, FlixelState));
|
||||||
FlxG.autoPause = false;
|
FlxG.autoPause = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function destroyUI():Void {
|
private function destroyUI():Void {
|
||||||
flixelButton.removeEventListener(MouseEvent.CLICK, onFlixelClick);
|
flixelButton.removeEventListener(MouseEvent.CLICK, onFlixelClick);
|
||||||
starlingButton.removeEventListener(MouseEvent.CLICK, onStarlingClick);
|
starlingButton.removeEventListener(MouseEvent.CLICK, onStarlingClick);
|
||||||
stage.removeEventListener(Event.RESIZE, onResize);
|
stage.removeEventListener(Event.RESIZE, onResize);
|
||||||
|
|
||||||
removeChild(uiContainer);
|
removeChild(uiContainer);
|
||||||
|
|
||||||
background = null;
|
background = null;
|
||||||
flixelButton = null;
|
flixelButton = null;
|
||||||
starlingButton = null;
|
starlingButton = null;
|
||||||
uiContainer = null;
|
uiContainer = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private var starlingSingleton:Starling;
|
private var starlingSingleton:Starling;
|
||||||
private function onStarlingClick(e:MouseEvent):Void {
|
|
||||||
trace("Launching Starling game");
|
private function onStarlingClick(e:MouseEvent):Void {
|
||||||
starlingSingleton = new Starling(starling.display.Sprite, stage, new Rectangle(0, 0, 800, 600));
|
starlingSingleton = new Starling(starling.display.Sprite, stage, new Rectangle(0, 0, 800, 600));
|
||||||
starlingSingleton.supportHighResolutions = true;
|
starlingSingleton.supportHighResolutions = true;
|
||||||
starlingSingleton.addEventListener(Event.ROOT_CREATED, onStarlingRootCreated);
|
starlingSingleton.addEventListener(StarlingEvent.ROOT_CREATED, onStarlingRootCreated);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function onStarlingRootCreated(event:Event):Void {
|
private function onStarlingRootCreated(event:StarlingEvent):Void {
|
||||||
destroyUI();
|
destroyUI();
|
||||||
starlingSingleton.removeEventListener(Event.ROOT_CREATED, onStarlingRootCreated);
|
starlingSingleton.removeEventListener(StarlingEvent.ROOT_CREATED, onStarlingRootCreated);
|
||||||
starlingSingleton.start();
|
starlingSingleton.start();
|
||||||
|
Starling.current.stage.stageWidth = 800;
|
||||||
|
Starling.current.stage.stageHeight = 600;
|
||||||
Starling.current.stage.color = 0x000000;
|
Starling.current.stage.color = 0x000000;
|
||||||
|
|
||||||
SceneManager.getInstance().switchScene(new BasicExample());
|
SceneManager.getInstance().switchScene(new BasicExample());
|
||||||
|
|||||||
@ -25,10 +25,11 @@
|
|||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
package spine;
|
package spine;
|
||||||
|
|
||||||
|
import haxe.DynamicAccess;
|
||||||
import Reflect;
|
import Reflect;
|
||||||
import haxe.Json;
|
import haxe.Json;
|
||||||
import spine.animation.AlphaTimeline;
|
import spine.animation.AlphaTimeline;
|
||||||
@ -134,8 +135,7 @@ class SkeletonJson {
|
|||||||
boneData.scaleY = getFloat(boneMap, "scaleY", 1);
|
boneData.scaleY = getFloat(boneMap, "scaleY", 1);
|
||||||
boneData.shearX = getFloat(boneMap, "shearX");
|
boneData.shearX = getFloat(boneMap, "shearX");
|
||||||
boneData.shearY = getFloat(boneMap, "shearY");
|
boneData.shearY = getFloat(boneMap, "shearY");
|
||||||
boneData.inherit = Reflect.hasField(boneMap,
|
boneData.inherit = Reflect.hasField(boneMap, "inherit") ? Inherit.fromName(Reflect.getProperty(boneMap, "inherit")) : Inherit.normal;
|
||||||
"inherit") ? Inherit.fromName(Reflect.getProperty(boneMap, "inherit")) : Inherit.normal;
|
|
||||||
boneData.skinRequired = Reflect.hasField(boneMap, "skin") ? cast(Reflect.getProperty(boneMap, "skin"), Bool) : false;
|
boneData.skinRequired = Reflect.hasField(boneMap, "skin") ? cast(Reflect.getProperty(boneMap, "skin"), Bool) : false;
|
||||||
|
|
||||||
var color:String = Reflect.getProperty(boneMap, "color");
|
var color:String = Reflect.getProperty(boneMap, "color");
|
||||||
@ -312,12 +312,17 @@ class SkeletonJson {
|
|||||||
physicsData.wind = getFloat(constraintMap, "wind");
|
physicsData.wind = getFloat(constraintMap, "wind");
|
||||||
physicsData.gravity = getFloat(constraintMap, "gravity");
|
physicsData.gravity = getFloat(constraintMap, "gravity");
|
||||||
physicsData.mix = getValue(constraintMap, "mix", 1);
|
physicsData.mix = getValue(constraintMap, "mix", 1);
|
||||||
physicsData.inertiaGlobal = Reflect.hasField(constraintMap, "inertiaGlobal") ? cast(Reflect.getProperty(constraintMap, "inertiaGlobal"), Bool) : false;
|
physicsData.inertiaGlobal = Reflect.hasField(constraintMap,
|
||||||
physicsData.strengthGlobal = Reflect.hasField(constraintMap, "strengthGlobal") ? cast(Reflect.getProperty(constraintMap, "strengthGlobal"), Bool) : false;
|
"inertiaGlobal") ? cast(Reflect.getProperty(constraintMap, "inertiaGlobal"), Bool) : false;
|
||||||
physicsData.dampingGlobal = Reflect.hasField(constraintMap, "dampingGlobal") ? cast(Reflect.getProperty(constraintMap, "dampingGlobal"), Bool) : false;
|
physicsData.strengthGlobal = Reflect.hasField(constraintMap,
|
||||||
physicsData.dampingGlobal = Reflect.hasField(constraintMap, "dampingGlobal") ? cast(Reflect.getProperty(constraintMap, "dampingGlobal"), Bool) : false;
|
"strengthGlobal") ? cast(Reflect.getProperty(constraintMap, "strengthGlobal"), Bool) : false;
|
||||||
|
physicsData.dampingGlobal = Reflect.hasField(constraintMap,
|
||||||
|
"dampingGlobal") ? cast(Reflect.getProperty(constraintMap, "dampingGlobal"), Bool) : false;
|
||||||
|
physicsData.dampingGlobal = Reflect.hasField(constraintMap,
|
||||||
|
"dampingGlobal") ? cast(Reflect.getProperty(constraintMap, "dampingGlobal"), Bool) : false;
|
||||||
physicsData.windGlobal = Reflect.hasField(constraintMap, "windGlobal") ? cast(Reflect.getProperty(constraintMap, "windGlobal"), Bool) : false;
|
physicsData.windGlobal = Reflect.hasField(constraintMap, "windGlobal") ? cast(Reflect.getProperty(constraintMap, "windGlobal"), Bool) : false;
|
||||||
physicsData.gravityGlobal = Reflect.hasField(constraintMap, "gravityGlobal") ? cast(Reflect.getProperty(constraintMap, "gravityGlobal"), Bool) : false;
|
physicsData.gravityGlobal = Reflect.hasField(constraintMap,
|
||||||
|
"gravityGlobal") ? cast(Reflect.getProperty(constraintMap, "gravityGlobal"), Bool) : false;
|
||||||
physicsData.mixGlobal = Reflect.hasField(constraintMap, "mixGlobal") ? cast(Reflect.getProperty(constraintMap, "mixGlobal"), Bool) : false;
|
physicsData.mixGlobal = Reflect.hasField(constraintMap, "mixGlobal") ? cast(Reflect.getProperty(constraintMap, "mixGlobal"), Bool) : false;
|
||||||
|
|
||||||
skeletonData.physicsConstraints.push(physicsData);
|
skeletonData.physicsConstraints.push(physicsData);
|
||||||
@ -419,7 +424,7 @@ class SkeletonJson {
|
|||||||
// Events.
|
// Events.
|
||||||
var events:Dynamic = Reflect.getProperty(root, "events");
|
var events:Dynamic = Reflect.getProperty(root, "events");
|
||||||
for (eventName in Reflect.fields(events)) {
|
for (eventName in Reflect.fields(events)) {
|
||||||
var eventMap:Map<String, Dynamic> = Reflect.field(events, eventName);
|
var eventMap:DynamicAccess<Dynamic> = Reflect.field(events, eventName);
|
||||||
var eventData:EventData = new EventData(eventName);
|
var eventData:EventData = new EventData(eventName);
|
||||||
eventData.intValue = getInt(eventMap, "int");
|
eventData.intValue = getInt(eventMap, "int");
|
||||||
eventData.floatValue = getFloat(eventMap, "float");
|
eventData.floatValue = getFloat(eventMap, "float");
|
||||||
@ -517,7 +522,7 @@ class SkeletonJson {
|
|||||||
var box:BoundingBoxAttachment = attachmentLoader.newBoundingBoxAttachment(skin, name);
|
var box:BoundingBoxAttachment = attachmentLoader.newBoundingBoxAttachment(skin, name);
|
||||||
if (box == null)
|
if (box == null)
|
||||||
return null;
|
return null;
|
||||||
readVertices(map, box, Std.parseInt(Reflect.field(map, "vertexCount")) << 1);
|
readVertices(map, box, getInt(map, "vertexCount", 0) << 1);
|
||||||
return box;
|
return box;
|
||||||
case AttachmentType.path:
|
case AttachmentType.path:
|
||||||
var path:PathAttachment = attachmentLoader.newPathAttachment(skin, name);
|
var path:PathAttachment = attachmentLoader.newPathAttachment(skin, name);
|
||||||
@ -525,11 +530,10 @@ class SkeletonJson {
|
|||||||
return null;
|
return null;
|
||||||
path.closed = Reflect.hasField(map, "closed") ? cast(Reflect.field(map, "closed"), Bool) : false;
|
path.closed = Reflect.hasField(map, "closed") ? cast(Reflect.field(map, "closed"), Bool) : false;
|
||||||
path.constantSpeed = Reflect.hasField(map, "constantSpeed") ? cast(Reflect.field(map, "constantSpeed"), Bool) : true;
|
path.constantSpeed = Reflect.hasField(map, "constantSpeed") ? cast(Reflect.field(map, "constantSpeed"), Bool) : true;
|
||||||
var vertexCount:Int = Std.parseInt(Reflect.field(map, "vertexCount"));
|
readVertices(map, path, getInt(map, "vertexCount", 0) << 1);
|
||||||
readVertices(map, path, vertexCount << 1);
|
|
||||||
var lengths:Array<Float> = new Array<Float>();
|
var lengths:Array<Float> = new Array<Float>();
|
||||||
for (curves in cast(Reflect.field(map, "lengths"), Array<Dynamic>)) {
|
for (curves in cast(Reflect.field(map, "lengths"), Array<Dynamic>)) {
|
||||||
lengths.push(Std.parseFloat(curves) * scale);
|
lengths.push(curves * scale);
|
||||||
}
|
}
|
||||||
path.lengths = lengths;
|
path.lengths = lengths;
|
||||||
return path;
|
return path;
|
||||||
@ -556,8 +560,7 @@ class SkeletonJson {
|
|||||||
throw new SpineException("Clipping end slot not found: " + end);
|
throw new SpineException("Clipping end slot not found: " + end);
|
||||||
clip.endSlot = slot;
|
clip.endSlot = slot;
|
||||||
}
|
}
|
||||||
var vertexCount:Int = getInt(map, "vertexCount", 0);
|
readVertices(map, clip, getInt(map, "vertexCount", 0) << 1);
|
||||||
readVertices(map, clip, vertexCount << 1);
|
|
||||||
color = Reflect.getProperty(map, "color");
|
color = Reflect.getProperty(map, "color");
|
||||||
if (color != null) {
|
if (color != null) {
|
||||||
clip.color.setFromString(color);
|
clip.color.setFromString(color);
|
||||||
@ -1035,22 +1038,22 @@ class SkeletonJson {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var timeline:PhysicsConstraintTimeline;
|
var timeline:PhysicsConstraintTimeline;
|
||||||
if (timelineName == "inertia")
|
if (timelineName == "inertia")
|
||||||
timeline = new PhysicsConstraintInertiaTimeline(frames, frames, constraintIndex);
|
timeline = new PhysicsConstraintInertiaTimeline(frames, frames, constraintIndex);
|
||||||
else if (timelineName == "strength")
|
else if (timelineName == "strength")
|
||||||
timeline = new PhysicsConstraintStrengthTimeline(frames, frames, constraintIndex);
|
timeline = new PhysicsConstraintStrengthTimeline(frames, frames, constraintIndex);
|
||||||
else if (timelineName == "damping")
|
else if (timelineName == "damping")
|
||||||
timeline = new PhysicsConstraintDampingTimeline(frames, frames, constraintIndex);
|
timeline = new PhysicsConstraintDampingTimeline(frames, frames, constraintIndex);
|
||||||
else if (timelineName == "mass")
|
else if (timelineName == "mass")
|
||||||
timeline = new PhysicsConstraintMassTimeline(frames, frames, constraintIndex);
|
timeline = new PhysicsConstraintMassTimeline(frames, frames, constraintIndex);
|
||||||
else if (timelineName == "wind")
|
else if (timelineName == "wind")
|
||||||
timeline = new PhysicsConstraintWindTimeline(frames, frames, constraintIndex);
|
timeline = new PhysicsConstraintWindTimeline(frames, frames, constraintIndex);
|
||||||
else if (timelineName == "gravity")
|
else if (timelineName == "gravity")
|
||||||
timeline = new PhysicsConstraintGravityTimeline(frames, frames, constraintIndex);
|
timeline = new PhysicsConstraintGravityTimeline(frames, frames, constraintIndex);
|
||||||
else if (timelineName == "mix") //
|
else if (timelineName == "mix") //
|
||||||
timeline = new PhysicsConstraintMixTimeline(frames, frames, constraintIndex);
|
timeline = new PhysicsConstraintMixTimeline(frames, frames, constraintIndex);
|
||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
timelines.push(readTimeline(timelineMap, timeline, 0, 1));
|
timelines.push(readTimeline(timelineMap, timeline, 0, 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user