Written by Vamitul see --> http://forums.adobe.com/message/5206049
#targetengine matrixscript
function main() {
function mainLoop() {
if (started) {
//select a random frame
var myFrame = framesArray[rnd(39)];
//test to reset it?
if (rnd(10)) {
// change each character in it
var lns = myFrame.lines.everyItem().getElements();
for (var l = 0; l < lns.length; l++) {
lns[l].characters[0].contents = myChars[rnd(myChars.length - 1)];
}
// add a new line
myFrame.insertionPoints[0].contents = myChars[rnd(myChars.length - 1)] + '\n';
myFrame.lines[0].fillColor = frontColors[3];
if (myFrame.overflows) {
resetFrame(myFrame);
}
} else {
resetFrame(myFrame);
}
}
}
function resetFrame(myFrame) {
myFrame.contents = '';
for (var j = 0; j < rnd(42, 3); j++) { //max 42 characaters per frame
var tmpCont = myFrame.contents;
myFrame.contents = tmpCont + myChars[rnd(myChars.length - 1)] + '\n';
}
myFrame.texts[0].appliedParagraphStyle = baseStyle;
var highlight = rnd(myFrame.lines.length - 2, 1);
myFrame.lines[highlight].fillColor = frontColors[1];
myFrame.lines[highlight + 1].fillColor = frontColors[2];
myFrame.lines[highlight - 1].fillColor = frontColors[2];
}
function rnd(max, start) {
start = (typeof start === 'undefined') ? 0 : start;
return Math.floor(Math.random() * (max - start + 1)) + start;
}
function checkFont() {
// add checkings
return "Trebuchet MS";
}
// set up document
app.scriptPreferences.enableRedraw = true;
var myDoc = app.documents.add({
documentPreferences: {
pageWidth: 200,
pageHeight: 150,
facingPages: false
}
});
//background
var backFrame = myDoc.pages[0].rectangles.add({
geometricBounds: [0, 0, 150, 200]
});
var backColor = myDoc.colors.add({
colorValue: [0, 0, 0],
space: ColorSpace.RGB
});
backFrame.fillColor = backColor;
backFrame.strokeWeight = 0;
backFrame.locked = true;
//save black settings and preview back and apply new ones
var oldBlackPrefs = app.colorSettings.idealizedBlackToScreen;
app.colorSettings.idealizedBlackToScreen = true;
myDoc.pasteboardPreferences.previewBackgroundColor = [0, 0, 0];
//add the colors
var frontColors = [];
frontColors.push(myDoc.colors.add({
colorValue: [102, 255, 51],
space: ColorSpace.RGB
}));
frontColors.push(myDoc.colors.add({
colorValue: [0, 255, 0],
space: ColorSpace.RGB
}));
frontColors.push(myDoc.colors.add({
colorValue: [0, 180, 0],
space: ColorSpace.RGB
}));
frontColors.push(myDoc.colors.add({
colorValue: [0, 100, 0],
space: ColorSpace.RGB
}));
// used characters
var myChars = ' \xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\u03a3\u03a4\u03a6\u03a9\u03b1\u03b2\u03b4\u03b5\u03bc\u03c0\u03c3\u03c4\u03c6\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x3c\x2c\x3e\x2e\x3f\x2f\x3a\x3b\\\"\\\'\x7b\x5b\x7d\x5d\\\\\x7c\x60\x7e\x30\x31\x32\x33\x34\x35\x36\x37\x39\x30\x2d\x5f\x3d\x2b\x21\x40\x23\x24\x25\x5e\x26\x2a\x28\x29';
var baseFont = checkFont();
var baseStyle = myDoc.paragraphStyles.add({
name: "base",
appliedFont: baseFont,
pointSize: 12,
leading: 10,
alignToBaseline: true,
fillColor: frontColors[3],
fontStyle: "Bold",
firstLineIndent: 0,
leftIndent: 0,
rightIndent: 0,
spaceBefore: 0,
spaceAfter: 0
});
var baseObjStyle = myDoc.objectStyles.add({
applyNextParagraphStyle: false,
enableFill: true,
enableStroke: true,
enableParagraphStyle: false,
enableTextFrameGeneralOptions: false,
enableTextFrameBaselineOptions: true,
enableStoryOptions: false,
enableTextWrapAndOthers: false,
enableAnchoredObjectOptions: false,
fillColor: myDoc.swatches[0],
strokeColor: myDoc.swatches[0],
strokeWeight: 0,
baselineFrameGridOptions: {
useCustomBaselineFrameGrid: true,
startingOffsetForBaselineFrameGrid: 0,
baselineFrameGridIncrement: '11pt',
baselineFrameGridRelativeOption: BaselineFrameGridRelativeOption.TOP_OF_PAGE
}
});
//switch to 'fullscreen'
app.activeWindow.screenMode = ScreenModeOptions.PRESENTATION_PREVIEW; // switch to fullscreen preview-mode
app.activeWindow.viewDisplaySetting = ViewDisplaySettings.HIGH_QUALITY; // we want high-quality
// app.activeWindow.screenMode = ScreenModeOptions.PREVIEW_TO_PAGE; // switch to preview-mode
// app.activeWindow.zoom(ZoomOptions.FIT_PAGE); // uncomment only if you use the above preview-mode
// create initial frame grid
var framesArray = [];
for (var i = 0; i < 40; i++) {
var tempGB = [0, (i * 5), 150, (i + 1) * 5];
framesArray.push(myDoc.pages[0].textFrames.add(undefined, undefined, undefined, {
geometricBounds: tempGB,
appliedObjectStyle: baseObjStyle,
appliedParagraphStyle: baseStyle
}));
}
//inital fill of the frames
for (var i = 0; i < 40; i++) {
resetFrame(framesArray[i]);
}
// control panel
var started = true;
var myPanel = new Window('palette', 'Control', undefined, {
borderless: true
});
myPanel.width = 60;
myPanel.height = 30;
myPanel.location = [$.screens[0].right - 100, $.screens[0].bottom - 80];
myPanel.graphics.backgroundColor = myPanel.graphics.newBrush(myPanel.graphics.BrushType.SOLID_COLOR, [0, 0, 0]);
myPanel.alignChildren = ['center', 'center'];
var exitButton = myPanel.add('button', undefined, 'Exit', {
name: "ok"
});
exitButton.onClick = function() {
//restore black settings
app.colorSettings.idealizedBlackToScreen = oldBlackPrefs;
app.scriptPreferences.enableRedraw = false;
//remove event listener
myTask.removeEventListener(IdleEvent.ON_IDLE, mainLoop);
myTask.remove();
/// close de document
myDoc.close(SaveOptions.NO);
myPanel.close();
started = false;
};
myPanel.show();
var myTask = app.idleTasks.add({
name: 'mainTask',
sleep: 4
});
var myTaskEvent = myTask.addEventListener(IdleEvent.ON_IDLE, mainLoop);
}
app.doScript('main()', undefined, undefined, UndoModes.fastEntireScript, '');