In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: 【解決しました】3D で警告が出る

開発環境で警告が出る。
* wonderfl では出てないみたい。
* 僕だけなのかな。
* 開発環境:FlexSDK(3.2.0) + FlashDevelop
* 
* 警告 : 3D DisplayObject はレンダリングされません。
* 描画するにはサイズ (6328, 6461) が大きすぎます。
* 
* --
* 画面外のオブジェクトを描画対象から外すことで解決しました。
* ひとつひとつどの位置にあるのかは、ちゃんと見とかないとダメなんですね。
*
Get Adobe Flash player
by seyself 24 Feb 2009
// forked from seyself's 3D で警告が出る
/**
 * 開発環境で警告が出る。
 * wonderfl では出てないみたい。
 * 僕だけなのかな。
 * 開発環境:FlexSDK(3.2.0) + FlashDevelop
 * 
 * 警告 : 3D DisplayObject はレンダリングされません。
 * 描画するにはサイズ (6328, 6461) が大きすぎます。
 * 
 * --
 * 画面外のオブジェクトを描画対象から外すことで解決しました。
 * ひとつひとつどの位置にあるのかは、ちゃんと見とかないとダメなんですね。
 * 
 */

package {
import flash.display.*;
import flash.events.*;
import flash.filters.*;
import flash.geom.*;
import flash.utils.*;

public class FlashTest extends Sprite {

private var sprite:Sprite = new Sprite();
private var items:Vector.<Sprite> = new Vector.<Sprite>();

public function FlashTest() 
{
    loaderInfo.addEventListener("init", loaderInfoInitHandler);
}

private function setup():void 
{
	addChild(sprite);
	
	var n:uint = 100;
	for (var i:uint = 0; i < n; i++) 
	{
		items.push(createRect());
	}
	
	sprite.x = 300;
	sprite.y = 200;
	
}

private function createRect():Sprite
{
	var rect:Sprite = new Sprite();
	var h:Number = 100;
	var w:Number = 100;
	rect.graphics.beginFill(0xFF0000);
	rect.graphics.drawRect( -w/2, -h/2, w, h);
	rect.graphics.endFill();
	
	rect.x = Math.random() * 3000 - 1500;
	rect.y = Math.random() * 3000 - 1500;
	rect.z = Math.random() * 3000 - 1500;
	
	return rect;
}

private function loop():void 
{
	
	sprite.rotationY += 2;
	
	var rect:Rectangle = new Rectangle(0,0,600,400);
	var pers:PerspectiveProjection = root.transform.perspectiveProjection;
	var vz:Number = pers.focalLength;
	var n:uint = items.length;
	for (var i:uint = 0; i < n; i++) 
	{
		var mc:DisplayObject = items[i];
		var vec:Vector3D = new Vector3D(mc.x, mc.y, mc.z);
		var pt:Point = sprite.local3DToGlobal(vec);
		if (rect.containsPoint(pt) && !mc.parent)
		{
			sprite.addChild(mc);
		}
		if (!rect.containsPoint(pt) && mc.parent)
		{
			sprite.removeChild(mc);
		}
		var bounds:Rectangle = mc.getBounds(sprite);
		if (mc.parent && bounds.width * bounds.height > 0x7FFFFF)
		{
			sprite.removeChild(mc);
		}
	}

}

private function loaderInfoInitHandler(event:Event):void
{
    loaderInfo.removeEventListener("init", loaderInfoInitHandler);
    setup();
    addEventListener("enterFrame", enterFrameHandler);
}

private function enterFrameHandler(event:Event):void
{
    loop();
}

}
}