<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Записки о Flash &#187; AS1</title>
	<atom:link href="http://etcs.ru/blog/category/as1/feed/" rel="self" type="application/rss+xml" />
	<link>http://etcs.ru</link>
	<description></description>
	<lastBuildDate>Fri, 16 Dec 2011 12:34:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Опеределение собственного html-кода размещения</title>
		<link>http://etcs.ru/blog/shit/own_html_code_recognizing/</link>
		<comments>http://etcs.ru/blog/shit/own_html_code_recognizing/#comments</comments>
		<pubDate>Tue, 31 Jul 2007 14:33:46 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS1]]></category>
		<category><![CDATA[Просто так]]></category>

		<guid isPermaLink="false">http://dev.etcs.ru/blog/as1/own_html_code_recognizing/</guid>
		<description><![CDATA[Небольшое извращение для ленивых: import flash.external.ExternalInterface; var code = &#34;function(ownURL){var tags=document.getElementsByTagName('embed');var outerHTML;var tag;for(var i=0;i&#60;tags.length;i++){tag=tags[i];var src=tag.getAttribute('src');if(src.indexOf(ownURL)!=-1){if(tag.parentNode.nodeName.toLowerCase()=='object'){tag=tag.parentNode;}try{if(tag.outerHTML){outerHTML=tag.outerHTML;}else{throw new Error();}}catch(e){outerHTML=new XMLSerializer().serializeToString(tag);}return outerHTML;}}tags=document.getElementsByTagName('object');for(var i=0;i&#60;tags.length;i++){tag=tags[i];var params=tag.getElementsByTagName('param');for(var j=0;j &#60;params.length;i++){var param=params[i];var name=param.getAttribute('name').toLowerCase();var value=param.getAttribute('value').toLowerCase();if(name=='movie'&#38;#038;&#38;value.indexOf(ownURL)!=-1){try{if(tag.outerHTML){outerHTML=tag.outerHTML;}else{throw new Error();}}catch(e){outerHTML=new XMLSerializer().serializeToString(tag);}return outerHTML;}}}return null;}&#34;; if (this._url.lastIndexOf('/') &#62; this._url.lastIndexOf('\\')) { ownURL = this._url.substr(this._url.lastIndexOf('/')+1); } &#8230; <a href="http://etcs.ru/blog/shit/own_html_code_recognizing/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Небольшое извращение для ленивых:</p>
<p><div><pre>import flash.external.ExternalInterface;
var code = &quot;function(ownURL){var tags=document.getElementsByTagName('embed');var outerHTML;var tag;for(var i=0;i&lt;tags.length;i++){tag=tags[i];var src=tag.getAttribute('src');if(src.indexOf(ownURL)!=-1){if(tag.parentNode.nodeName.toLowerCase()=='object'){tag=tag.parentNode;}try{if(tag.outerHTML){outerHTML=tag.outerHTML;}else{throw new Error();}}catch(e){outerHTML=new XMLSerializer().serializeToString(tag);}return outerHTML;}}tags=document.getElementsByTagName('object');for(var i=0;i&lt;tags.length;i++){tag=tags[i];var params=tag.getElementsByTagName('param');for(var j=0;j
&lt;params.length;i++){var param=params[i];var name=param.getAttribute('name').toLowerCase();var value=param.getAttribute('value').toLowerCase();if(name=='movie'&amp;#038;&amp;value.indexOf(ownURL)!=-1){try{if(tag.outerHTML){outerHTML=tag.outerHTML;}else{throw new Error();}}catch(e){outerHTML=new XMLSerializer().serializeToString(tag);}return outerHTML;}}}return null;}&quot;;
if (this._url.lastIndexOf('/') &gt; this._url.lastIndexOf('\\')) {
	ownURL = this._url.substr(this._url.lastIndexOf('/')+1);
} else {
	ownURL = this._url.substr(this._url.lastIndexOf('\\')+1);
}
result = ExternalInterface.call(code,ownURL);
txt.text = result;</pre></div></p>
<p>Если вам лень показывать необходимый код для размещения вашей флешки, то вы можете использовать приведенный код выше для того, чтобы флешка сама показывала собственный код размещения.<br />
Корявенько, не очень кроссбраузерно (старые версии Оперы и IE, возможно, не будут с этим работать). Может не работать с путями, в которых отсутствует имя swf-файла.<br />
txt — текстовое поле.</p>
<p><a href="http://etcs.ru/flash/shit/own_code/" target="_blank">Результат</a> | <a href="http://etcs.ru/flash/shit/own_code/code.rar" target="_blank">Исходник</a>.</p>
<p>UPD: Похоже, во второй бете плеера сия фича больше не работает.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/shit/own_html_code_recognizing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Экспорт классов во второй кадр и создание прелоадера во Flash CS3</title>
		<link>http://etcs.ru/blog/as1/export_in_second_frame_flash_cs3/</link>
		<comments>http://etcs.ru/blog/as1/export_in_second_frame_flash_cs3/#comments</comments>
		<pubDate>Fri, 18 May 2007 15:26:45 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS1]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[CS3]]></category>

		<guid isPermaLink="false">http://dev.etcs.ru/blog/shit/export_in_second_frame_flash_cs3/</guid>
		<description><![CDATA[Итак, в AS2 общая схема создания ролика all-in-one (с прелоадером) такова: 1) Все экспортируемые элементы не экспортируются в первый кадр (галочка Export in first frame снята); 2) Создается пустой мувик, содержащий два кадра. В первом только stop(); и больше ничего &#8230; <a href="http://etcs.ru/blog/as1/export_in_second_frame_flash_cs3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Итак, в AS2 общая схема создания ролика all-in-one (с прелоадером) такова:<br />
1) Все экспортируемые элементы не экспортируются в первый кадр (галочка Export in first frame снята);<br />
2) Создается пустой мувик, содержащий два кадра. В первом только stop(); и больше ничего нет. Во втором кадре данного мувика размещаются все экспортируемые элементы (звуки, шрифты, мувиклипы). stop в первом кадре не позволяет данному мувику переходить на свой второй кадр, таким образом мы избегаем ненужной инициализации элементов, находящихся во втором кадре;<br />
3) Данный мувик размещается во втором кадре проекта в любом месте сцены (все равно он в принципе невидим, т.к. в его первом кадре ничего нет);<br />
4) В настроках AS2 проекта выставляется второй кадр для экспортирования классов;<br />
5) В третьем (можно и во втором) кадре проекта можно пользоваться всеми классами и ресурсами.</p>
<p>Таким образом, первый кадр освобожден от различных ресурсов и мы можем написать там обычный AS1-код (увы, чистого AS2 в таком варианте добиться вы получиться) прелоадера.</p>
<p>Однако, применяя такую схему для AS3, вы можете столкнуться с тем, что клипы, у которых есть содержимое, создаются, но это содержимое отсутствует. Такая проблема возникает для различных спрайтов, мувиклипов, которые содержат, например, шейпы, нарисованные вручную в IDE. В случае же обычных классов, не являющихся визуальными (или происходит программная отрисовка) такой проблемы нет. Проблема, судя по всему, связана с тем, что компилятор, когда встречает обращение к подобным клипам до кадра экспорта (в данном случае — второго), переносит код такого класса в первый кадр, а вот его содержимое (шейпы, например) — «забывает».</p>
<p><strong>Что нам нужно для того, чтобы решить данную проблему?</strong></p>
<p>Отказаться от обращений к пользовательским классам в Document class.</p>
<p><strong>Как?</strong></p>
<p>Использовать метод loaderInfo.applicationDomain.getDefinition для создания экземпляра класса, который будет являться входной точкой нашего приложения. А уже в этом классе мы можем создавать все, что душе угодно. Но при этом нам нужно добиться, чтобы класс, являющийся входной точкой нашего приложения был экспортирован во второй кадр.</p>
<p><strong>А как этого можно добиться, если мы не делаем прямых обращений к пользовательским классам в Document class?</strong></p>
<p>Заставить компилятор экспортировать наш входной класс также просто: необходимо создать пустой мувиклип, с прописанным у него входным классом и поместить этот клип в тот самый двухкадровый мувиклип-экспортер, содержащий и все остальные ресурсы. Таким образом, компилятор создаст два объявления AS3-классов в нашем ролике. В первом объявлении будет содержаться только Document class (вы можете, конечно, создать какие-либо невизуальные классы, либо классы-спрайты, занимающиеся программной отрисовкой чего-либо, но таким образом вы основательно можете увеличить вес первого кадра), во втором (которое располагается во втором кадре) — все остальные классы, в т.ч. класс, являющийся входной точкой.</p>
<p>Представляю вашему вниманию <a href="http://etcs.ru/flash/export/ExportSecondFrame.zip">простейший пример</a> создания ролика в CS3 с экспортом классов во втором кадре и загрузчиком.</p>
<p>Некоторые пояснения к примеру:<br />
Классы <strong>Box</strong> и <strong>Star</strong> — нарисованные вручную клипы.</p>
<p>Класс <strong>Program</strong> есть по сути Document class, он же входная точка.</p>
<p>Класс <strong>AnotherClass</strong> просто иллюстрирует работу экспорта во второй кадр всех нужных классов (не только физически размещенных во втором кадре).</p>
<p>Класс <strong>EmbedClip</strong> является сервисным классом-экспортером, во втором кадре которого мы будем размещать все наши нарисованные клипы. В этот кадр данный класс никогда не переходит, во избежание лишних инициализаций классов. Экземпляр данного класса находится во втором кадре нашего ролика.</p>
<p>Ну а <strong>ExportSecondFrameExample</strong> есть настоящий Document class, по совместительству выполняющий функцию загрузчика.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/as1/export_in_second_frame_flash_cs3/feed/</wfw:commentRss>
		<slash:comments>64</slash:comments>
		</item>
		<item>
		<title>Пыль</title>
		<link>http://etcs.ru/blog/shit/dust/</link>
		<comments>http://etcs.ru/blog/shit/dust/#comments</comments>
		<pubDate>Tue, 24 Oct 2006 11:18:52 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS1]]></category>
		<category><![CDATA[AS2]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Просто так]]></category>

		<guid isPermaLink="false">http://dev.etcs.ru/blog/shit/dust/</guid>
		<description><![CDATA[«Смахиваем пыль». Ну типа того, эксперимент. Может кому пригодится… UPD: Ну хорошо, хорошо, не пыль. Теперь похоже? UPD: + аналог на AS3 import flash.display.BitmapData; import flash.geom.Matrix; import flash.geom.Rectangle; import flash.geom.Point; var image:BitmapData = new BitmapData(300, 200, false, 0); var mask:BitmapData &#8230; <a href="http://etcs.ru/blog/shit/dust/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>«Смахиваем пыль». Ну типа того, эксперимент. Может кому пригодится…</p>
<p>UPD: Ну хорошо, хорошо, не пыль. Теперь похоже?</p>
<p>UPD: + аналог на AS3<br />
<span id="more-32"></span><br />
<div><pre>import flash.display.BitmapData;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.geom.Point;
var image:BitmapData = new BitmapData(300, 200, false, 0);
var mask:BitmapData = new BitmapData(300, 200, true, 0x55FFFFFF);
var mask2:BitmapData = new BitmapData(300, 200, true, 0x55FFFFFF);
var mc:MovieClip = this.createEmptyMovieClip('mc', 1);
var cursor:MovieClip = mc.createEmptyMovieClip('cursor', 1);
var matrix:Matrix = new Matrix();
matrix.createGradientBox(100, 100, 0, 0, 0);
cursor.beginGradientFill('radial', [0xFFFFFF, 0xFFFFFF], [50, 0], [100, 255], matrix);
with (cursor) {
	moveTo(0, 0);
	lineTo(0, 100);
	lineTo(100, 100);
	lineTo(100, 0);
	lineTo(0, 0);
	endFill();
}
var im:BitmapData = new BitmapData(100, 100, true, 0);
im.draw(cursor);
cursor.clear();
cursor.removeMovieClip();
image.perlinNoise(150, 100, 2, 65, true, false);
mask.perlinNoise(150, 200, 2, 28, true, true, 8, true);
mask2.noise(23,0,100,8);
mask.copyPixels(mask2,mask2.rectangle,new Point(0,0),mask2,new Point(0,0),true);
mask2.dispose();
mc.attachBitmap(mask, 0);
this.attachBitmap(image, 0);
this.cacheAsBitmap = true;
mc.cacheAsBitmap = true;
this.setMask(mc);
onMouseMove = function () {
	var rect:Rectangle = new Rectangle(0,0,100,100);
	var point:Point = new Point(_xmouse-50,_ymouse-50);
	mask.copyPixels(im,rect,point,im,new Point(0,0),true);
	updateAfterEvent();
};</pre></div><br />
Результат:</p>
<div id="flash_dust" style="height:200px;width:300px;border:1px solid #999;">JavaScript support required</div>
<p><script type="text/javascript">var swf = new SWFObject("http://etcs.ru/flash/shit/dust.swf", "flash_dust_swf", "300", "200", "8");swf.addParam("quality", "high");swf.addParam("scale", "noscale");swf.addParam("bgcolor", "#ffffff");swf.write("flash_dust");</script></p>
<p>Тоже самое на AS3:<br />
<div><pre>package {
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.display.BitmapDataChannel;
	import flash.display.PixelSnapping;
	import flash.display.GradientType;
	import flash.events.MouseEvent;
	import flash.geom.Matrix;
	import flash.geom.Rectangle;
	import flash.geom.Point;&lt;/p&gt;
&lt;p&gt;	public class Dust extends Sprite {
		private var maskBitmap:BitmapData;
		private var cursorBitmap:BitmapData;
		public function Dust() {
			var imageWidth:Number = 300;
			var imageHeight:Number = 200;
			var cursorSize:Number = 100;&lt;/p&gt;
&lt;p&gt;			var imageBitmap:BitmapData = new BitmapData(imageWidth, imageHeight, false, 0);
			var noiseBitmap:BitmapData = new BitmapData(imageWidth, imageHeight, true, 0);
			this.maskBitmap = new BitmapData(imageWidth, imageHeight, true, 0);
			this.cursorBitmap = new BitmapData(cursorSize, cursorSize, true, 0);&lt;/p&gt;
&lt;p&gt;			var cursor:Bitmap = new Bitmap(cursorBitmap,PixelSnapping.AUTO,false);
			var image:Bitmap = new Bitmap(imageBitmap,PixelSnapping.AUTO,false);
			var maskImage:Bitmap = new Bitmap(maskBitmap,PixelSnapping.AUTO,false);
			var maskSprite:Sprite = new Sprite();
			var imageSprite:Sprite = new Sprite();&lt;/p&gt;
&lt;p&gt;			var cursorGradientType:String = GradientType.RADIAL;
			var cursorColors:Array = new Array(0xFFFFFF,0xFFFFFF);
			var cursorAlphas:Array = new Array(0.5,0);
			var cursorRatios:Array = new Array(100,255);
			var cursorMatrix:Matrix = new Matrix();&lt;/p&gt;
&lt;p&gt;			var destinationPoint:Point = new Point(0,0);&lt;/p&gt;
&lt;p&gt;			cursorMatrix.createGradientBox(cursorSize,cursorSize,0,0,0);&lt;/p&gt;
&lt;p&gt;			with (this.graphics) {
				beginGradientFill(cursorGradientType,cursorColors,cursorAlphas,cursorRatios,cursorMatrix);
				moveTo(0,0);
				lineTo(cursorSize,0);
				lineTo(cursorSize,cursorSize);
				lineTo(0,cursorSize);
				lineTo(0,0);
				endFill();
			}&lt;/p&gt;
&lt;p&gt;			this.cursorBitmap.draw(this);
			this.graphics.clear();&lt;/p&gt;
&lt;p&gt;			imageBitmap.perlinNoise(imageWidth/2, imageHeight/2, 2, 65, true, false);
			this.maskBitmap.perlinNoise(imageWidth/2, imageHeight, 2, 28, true, true, BitmapDataChannel.ALPHA, true);
			noiseBitmap.noise(23,0,100,BitmapDataChannel.ALPHA);&lt;/p&gt;
&lt;p&gt;			this.maskBitmap.copyPixels(noiseBitmap,noiseBitmap.rect,destinationPoint,noiseBitmap,destinationPoint,true);&lt;/p&gt;
&lt;p&gt;			noiseBitmap.dispose();
			noiseBitmap = null;&lt;/p&gt;
&lt;p&gt;			maskSprite.addChild(maskImage);
			maskSprite.cacheAsBitmap = true;
			imageSprite.addChild(image);
			imageSprite.cacheAsBitmap = true;
			this.addChild(imageSprite);
			this.addChild(maskSprite);
			imageSprite.mask = maskSprite;
			this.addEventListener(MouseEvent.MOUSE_MOVE,this.mouseMoveHandler);
		}&lt;/p&gt;
&lt;p&gt;		private function mouseMoveHandler(event:MouseEvent):void {
			var x:Number = event.localX;
			var y:Number = event.localY;
			var rect:Rectangle = new Rectangle(0,0,this.cursorBitmap.width,this.cursorBitmap.height);
			var point:Point = new Point(x-this.cursorBitmap.width/2,y-this.cursorBitmap.height/2);
			var destinationPoint:Point = new Point(0,0);
			this.maskBitmap.copyPixels(this.cursorBitmap,rect,point,this.cursorBitmap,destinationPoint,true);
			event.updateAfterEvent();
		}
	}
}</pre></div><br />
Круто, да? <img src='http://etcs.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Результат (видимых различий нет):</p>
<div id="flash_dust_as3" style="height:200px;width:300px;border:1px solid #999;">JavaScript support required</div>
<p><script type="text/javascript">var swf = new SWFObject("http://etcs.ru/flash/shit/dust_as3.swf", "flash_dust_swf_as3", "300", "200", "9");swf.addParam("quality", "high");swf.addParam("scale", "noscale");swf.addParam("bgcolor", "#ffffff");swf.write("flash_dust_as3");</script><br />
На AS3 вариант заметно тяжелее — 1492 байта против 672…<br />
Но заметно быстрее (если на весь экран расстянуть флешку)</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/shit/dust/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Fog of War</title>
		<link>http://etcs.ru/blog/shit/fog_of_war/</link>
		<comments>http://etcs.ru/blog/shit/fog_of_war/#comments</comments>
		<pubDate>Tue, 22 Aug 2006 09:28:02 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS1]]></category>
		<category><![CDATA[AS2]]></category>
		<category><![CDATA[Просто так]]></category>

		<guid isPermaLink="false">http://dev.etcs.ru/blog/shit/fog_of_war/</guid>
		<description><![CDATA[Создаём «Дым войны» import flash.display.BitmapData; import flash.geom.*; //variables cellWidth = 20; cellHeight = 20; colors = [0, 0]; fillType = &#34;radial&#34;; alphas = [100, 0]; ratios = [50, 255]; spreadMethod = &#34;pad&#34;; interpolationMethod = &#34;linearRGB&#34;; focalPointRatio = 0; matrix = &#8230; <a href="http://etcs.ru/blog/shit/fog_of_war/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Создаём «Дым войны»<br />
<span id="more-22"></span><br />
<div><pre>import flash.display.BitmapData;
import flash.geom.*;
//variables
cellWidth = 20;
cellHeight = 20;
colors = [0, 0];
fillType = &quot;radial&quot;;
alphas = [100, 0];
ratios = [50, 255];
spreadMethod = &quot;pad&quot;;
interpolationMethod = &quot;linearRGB&quot;;
focalPointRatio = 0;
matrix = new Matrix();
matrix.createGradientBox(300, 300, 0, 0, 0);
/// movies
background_mc = this.createEmptyMovieClip('background_mc', 0);
canvas_mc = this.createEmptyMovieClip('canvas_mc', 1);
fog_mc = this.createEmptyMovieClip('fog_mc', 2);
gradient_mc = this.createEmptyMovieClip(&quot;gradient_mc&quot;, 3);
///bmp
bmp = new BitmapData(cellWidth, cellHeight, false, 0xFFFFFF);
gradient_bmp = new BitmapData(300, 300, true, 0x00000000);
fog_bmp = new BitmapData(2000, 2000, true, 0x00FFFFFF);
///
background_mc.cacheAsBitmap = true;
fog_mc.cacheAsBitmap = true;
canvas_mc.cacheAsBitmap = true;
///
canvas_mc.lineStyle(1, 0x999999, 50, true, 'none', 'none');
canvas_mc.moveTo(cellWidth-1, -1);
canvas_mc.lineTo(cellWidth-1, cellHeight+1);
canvas_mc.moveTo(-1, cellHeight-1);
canvas_mc.lineTo(cellWidth-1, cellHeight-1);
bmp.draw(canvas_mc);
///
canvas_mc.setMask(fog_mc);
///
with (gradient_mc) {
	beginGradientFill(fillType, colors, alphas, ratios, matrix, spreadMethod, interpolationMethod, focalPointRatio);
	moveTo(0, 0);
	lineTo(300, 0);
	lineTo(300, 300);
	lineTo(0, 300);
	lineTo(0, 0);
	endFill();
}
gradient_bmp.draw(gradient_mc);
gradient_mc.removeMovieClip();
//////////////
fog_mc.attachBitmap(fog_bmp, 0);
onMouseMove = function () {
	fog_bmp.copyPixels(gradient_bmp, new Rectangle(0, 0, 300, 300), new Point(_xmouse-150, _ymouse-150), null, null, true);
};
onResize = function () {
	canvas_mc.clear();
	canvas_mc.beginBitmapFill(bmp, new Matrix(), true, false);
	canvas_mc.moveTo(0, 0);
	canvas_mc.lineTo(Stage.width, 0);
	canvas_mc.lineTo(Stage.width, Stage.height);
	canvas_mc.lineTo(0, Stage.height);
	background_mc.clear();
	background_mc.beginFill(0, 100);
	background_mc.moveTo(0, 0);
	background_mc.lineTo(Stage.width, 0);
	background_mc.lineTo(Stage.width, Stage.height);
	background_mc.lineTo(0, Stage.height);
};
Stage.align = 'LT';
Stage.scaleMode = 'noScale';
Stage.addListener(this);
onResize();
</pre></div><br />
Можно соптимизировать, подправить и т.п., но суть ясна.<br />
з.Ы. Извините за несовсем корректный код.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/shit/fog_of_war/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Интересный эффект</title>
		<link>http://etcs.ru/blog/shit/interesting_effect/</link>
		<comments>http://etcs.ru/blog/shit/interesting_effect/#comments</comments>
		<pubDate>Mon, 21 Aug 2006 13:57:36 +0000</pubDate>
		<dc:creator>etc</dc:creator>
				<category><![CDATA[AS1]]></category>
		<category><![CDATA[AS2]]></category>
		<category><![CDATA[Просто так]]></category>

		<guid isPermaLink="false">http://dev.etcs.ru/blog/shit/interesting_effect/</guid>
		<description><![CDATA[import flash.display.BitmapData; import flash.geom.*; cellWidth = 20; cellHeight = 20; canvas_mc = this.createEmptyMovieClip('canvas_mc', 60); canvas_mc.lineStyle(1, 0x999999, 50, true, 'none', 'none'); canvas_mc.moveTo(cellWidth-1, -1); canvas_mc.lineTo(cellWidth-1, cellHeight+1); canvas_mc.moveTo(-1, cellHeight-1); canvas_mc.lineTo(cellWidth-1, cellHeight-1); bmp = new BitmapData(cellWidth, cellHeight, true, 0); bmp.draw(canvas_mc); onResize = function () &#8230; <a href="http://etcs.ru/blog/shit/interesting_effect/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><div><pre>import flash.display.BitmapData;
import flash.geom.*;
cellWidth = 20;
cellHeight = 20;
canvas_mc = this.createEmptyMovieClip('canvas_mc', 60);
canvas_mc.lineStyle(1, 0x999999, 50, true, 'none', 'none');
canvas_mc.moveTo(cellWidth-1, -1);
canvas_mc.lineTo(cellWidth-1, cellHeight+1);
canvas_mc.moveTo(-1, cellHeight-1);
canvas_mc.lineTo(cellWidth-1, cellHeight-1);
bmp = new BitmapData(cellWidth, cellHeight, true, 0);
bmp.draw(canvas_mc);
onResize = function () {
	canvas_mc.clear();
	canvas_mc.beginBitmapFill(bmp, new Matrix(), true, false);
	canvas_mc.moveTo(0, 0);
	canvas_mc.lineTo(Stage.width, 0);
	canvas_mc.lineTo(Stage.width, Stage.height);
	canvas_mc.lineTo(0, Stage.height);
};
/////////////
gradient_bmp = new BitmapData(800, 800, true, 0x00000000);
gradient_mc = this.createEmptyMovieClip(&quot;gradient_mc&quot;, 2);
with (gradient_mc) {
	colors = [0, 0xFFFFFF];
	fillType = &quot;radial&quot;;
	alphas = [0, 100];
	ratios = [150, 255];
	spreadMethod = &quot;pad&quot;;
	interpolationMethod = &quot;linearRGB&quot;;
	focalPointRatio = 0;
	matrix = new Matrix();
	matrix.createGradientBox(300, 300, 0, 250, 250);
	beginGradientFill(fillType, colors, alphas, ratios, matrix, spreadMethod, interpolationMethod, focalPointRatio);
	moveTo(0, 0);
	lineTo(800, 0);
	lineTo(800, 800);
	lineTo(0, 800);
	lineTo(0, 0);
	endFill();
}
gradient_bmp.draw(this.gradient_mc);
gradient_mc.removeMovieClip();
fog_bmp = new BitmapData(2000, 2000, false, 0xCCFFFFFF);
onMouseMove = function () {
	fog_bmp.copyPixels(gradient_bmp, new Rectangle(0, 0, 800, 800), new Point(_xmouse-400, _ymouse-400));
};
this.attachBitmap(fog_bmp, 1);
Stage.align = 'LT';
Stage.scaleMode = 'noScale';
Stage.addListener(this);
onResize();
</pre></div><br />
Случайно получилось.</p>
<p>з.Ы. StageManager будет позже.</p>
]]></content:encoded>
			<wfw:commentRss>http://etcs.ru/blog/shit/interesting_effect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

