Optimize parallax

This commit is contained in:
Schmelczer András 2019-12-25 22:30:44 +01:00
parent 5a87d2db71
commit da9d0a1136
15 changed files with 135 additions and 207 deletions

View file

@ -10,3 +10,17 @@ export const randomFactory = seed => () =>
((2 ** 31 - 1) & (seed = Math.imul(48271, seed))) / 2 ** 31;
export const fixedSeedRandom = randomFactory(42);
export const choose = <T>(
list: Array<T>,
random: () => number = fixedSeedRandom
): T => list[randomInInterval(0, list.length, random)];
export const randomInInterval = (
aClosed: number,
bOpen: number,
random: () => number = fixedSeedRandom
): number => Math.floor((bOpen - aClosed) * random()) + aClosed;
export const sum = (list: ArrayLike<number>): number =>
Array.prototype.reduce.call(list, (a, sum) => a + sum, 0);

View file

@ -9,6 +9,7 @@ export abstract class PageElement {
}
protected setElement(value: HTMLElement) {
this.getElement()?.parentElement?.replaceChild(value, this.getElement());
this.element = value;
}

View file

@ -12,7 +12,7 @@ export class Page extends PageElement {
{ type: PageEventType.eventGeneratorChanged, data: this },
this
);
rootElement.append(...children.map(e => e.getElement()));
rootElement.append(...children.map(e => e.getElement()).filter(e => e));
this.giveEvent({ type: PageEventType.onLoad }, this);
}
}