HTML and CSS Reference
In-Depth Information
3. Then, we create the createFromSequence method with the following code that
turns a sequence back to a composiion:
Composition.createFromSequence = function(sequence) {
// function to determine if 2 given patterns overlap.
var allowPatternsInSameLevel =
function(patternA, patternB) {
// iterate the array to see if current pattern overlaps the
var nonOverlappedPattern = Composition.
nonOverlappedPattern[patternA]
var len = nonOverlappedPattern.length;
for (var i=0; i<len; i++) {
if (nonOverlappedPattern[i] === parseInt(patternB)) {
return true;
}
}
return false;
};
// layer is an array that contains existing pattern
var layerAllowsPattern = function(layer, pattern) {
for (var i=0, len=layer.length; i<len; i++) {
if (!allowPatternsInSameLevel(layer[i], pattern)) {
return false;
}
}
return true;
};
// end helper functions
var newComposition = new Composition();
var layer = [];
for (var i=0, len=sequence.length; i<len; i++) {
if (layerAllowsPattern(layer, sequence[i])) {
// we are still in same layer.
layer.push(sequence[i]);
} else {
// two patterns overlapped,
// we push the current layer to composition
// and use a new layer for the current pattern.
newComposition.data.push(layer);
layer = []; // new array instance to prevent browser using
the same array and crashes the data.
layer.push(sequence[i]);
}
 
Search WWH ::




Custom Search