Skip to content

Commit 772696c

Browse files
committed
fix parallax depth, add bounds
1 parent 975b463 commit 772696c

File tree

3 files changed

+40
-59
lines changed

3 files changed

+40
-59
lines changed

src/Main.hx

Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -66,43 +66,24 @@ class Main extends Sprite
6666
}
6767
}
6868
}
69-
70-
trace(parallax);
71-
69+
7270
parallax.setZoomBounds(stage.stageHeight);
7371

7472
imagePivot.setTo(stage.stageWidth / 2, stage.stageHeight / 2);
7573

7674

7775
//stage.addEventListener(MouseEvent.CLICK, onClick);
78-
//stage.addEventListener(MouseEvent.MOUSE_WHEEL, onWheel);
76+
stage.addEventListener(MouseEvent.MOUSE_WHEEL, onWheel);
7977
stage.addEventListener(MouseEvent.MOUSE_DOWN, onDragStart);
8078
//stage.addEventListener(MouseEvent.RIGHT_CLICK, onReset);
81-
//stage.addEventListener(Event.RESIZE, onResize);
79+
stage.addEventListener(Event.RESIZE, onResize);
8280
}
8381

8482
function onResize(e:Event):Void
8583
{
8684
//parallax.camera.width = stage.stageWidth;
8785
//parallax.camera.height = stage.stageHeight;
8886
parallax.setZoomBounds(stage.stageHeight);
89-
/*var values = [for (i in 0...5) i * deltaZoom + minZoom];
90-
trace(values);
91-
//find closest zoom to current
92-
var closest = 42.;
93-
for (item in values)
94-
{
95-
if ( Math.abs(item - zoom) < Math.abs(zoom - closest))
96-
closest = item;
97-
}
98-
99-
if (closest != zoom)
100-
{
101-
trace("resize", minZoom, "old", zoom, "closest", closest, maxZoom);
102-
zoom = closest;
103-
applyZoom();
104-
}*/
105-
10687
}
10788

10889
function onReset(e:MouseEvent):Void
@@ -142,17 +123,9 @@ class Main extends Sprite
142123
containers[i].x = parallax.layers[i].x;
143124
containers[i].y = parallax.layers[i].y;
144125
}
145-
//bgPos.setTo(image.x, image.y);
146-
//checkBounds(bgPos, stage.stageWidth, stage.stageHeight, image.width, image.height);
147-
//image.x = bgPos.x;
148-
//image.y = bgPos.y;
149-
150-
}
151-
function onClick(e:MouseEvent):Void
152-
{
153-
stage.displayState = StageDisplayState.FULL_SCREEN;
154-
126+
155127
}
128+
156129
function onWheel(e:MouseEvent):Void
157130
{
158131
parallax.onZoom(e.delta / 100);

src/parallax/Parallax.hx

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,42 +49,61 @@ class Parallax
4949

5050
public function moveCamera(x:Float, y:Float):Void
5151
{
52-
camera.x += x;
53-
camera.y += y;
54-
//checkBounds();
52+
camera.x += x * speed;
53+
camera.y += y * speed;
54+
checkBounds();
5555
updateLayers();
5656
}
5757

5858
public function updateLayers():Void
5959
{
6060
for (layer in layers)
6161
{
62-
layer.x = layer.originX - camera.x + (camera.originX - camera.x) * speed * layer.depth;
63-
layer.y = layer.originY - camera.y + (camera.originY - camera.y) * speed * layer.depth;
62+
layer.x = Math.round(layer.originX - camera.x + (camera.originX - camera.x) * (layer.depth - 1));
63+
layer.y = Math.round(layer.originY - camera.y + (camera.originY - camera.y) * (layer.depth - 1));
6464
}
6565
}
6666

6767

68-
69-
inline public function setZoomBounds(screenY:Int):Void
68+
public function setZoomBounds(screenY:Int):Void
7069
{
71-
camera.setZoomBounds(screenY);
70+
//zoom bounds
71+
//to have fluid zoom
72+
camera.minZoom = screenY / (height / camera.zoom);
73+
//trace("image height", height / camera.zoom, "stage", screenY);
74+
camera.deltaZoom = (1 - camera.minZoom) / 2;
75+
camera.maxZoom = 1 + camera.deltaZoom *2;
76+
trace(camera.minZoom, camera.zoom, camera.maxZoom, camera.deltaZoom);
77+
78+
79+
var values = [for (i in 0...5) i * camera.deltaZoom + camera.minZoom];
80+
//find closest zoom to current
81+
var closest = 42.;
82+
for (item in values)
83+
{
84+
if ( Math.abs(item - camera.zoom) < Math.abs(camera.zoom - closest))
85+
closest = item;
86+
}
87+
88+
if (closest != camera.zoom)
89+
{
90+
trace("resize", camera.minZoom, "old", camera.zoom, "closest", closest, camera.maxZoom);
91+
camera.zoom = closest;
92+
//applyZoom();
93+
}
94+
7295
}
7396

7497
public function checkBounds():Void{
7598
if (camera.x < 0){
76-
trace('bound reach x <0');
7799
camera.x = 0;
78100
}else if (camera.x > width - camera.width){
79-
trace('bound reach camera.width - width', camera.width, width);
80101
camera.x = width - camera.width;
81102
}
82103

83104
if (camera.y < 0){
84105
camera.y = 0;
85-
trace('bound reach y <0');
86106
}else if (camera.y > height - camera.height){
87-
trace('bound reach camera.height - height');
88107
camera.y = height - camera.height;
89108

90109
}

src/parallax/ParallaxCamera.hx

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ class ParallaxCamera
1818

1919
//zoom
2020
//zoom
21-
var minZoom:Float;
22-
var preZoom:Float;
21+
public var minZoom:Float;
22+
public var preZoom:Float;
2323
public var zoom:Float;
24-
var maxZoom:Float;
25-
var deltaZoom:Float;
24+
public var maxZoom:Float;
25+
public var deltaZoom:Float;
2626

2727
public function new(x:Float, y:Float, width:Float = 1920, height:Float = 1080, zoom:Float = 1)
2828
{
@@ -35,17 +35,6 @@ class ParallaxCamera
3535
this.y = y;
3636
}
3737

38-
public function setZoomBounds(screenY:Float):Void
39-
{
40-
//zoom bounds
41-
//to have fluid zoom
42-
minZoom = screenY / (height / zoom);
43-
//trace("image height", height / zoom, "stage", screenY);
44-
deltaZoom = (1 - minZoom) / 2;
45-
maxZoom = 1 + deltaZoom *2;
46-
//trace(minZoom, zoom, maxZoom, deltaZoom);
47-
}
48-
4938
public function onZoom(delta:Float):Void
5039
{
5140
preZoom = zoom;

0 commit comments

Comments
 (0)