.:: Jasa Membuat Aplikasi Website,Desktop,Android Order Now..!! | | Order Now..!! Jasa Membuat Project Arduino,Robotic,Print 3D ::.

as3 how to distort or smash 4x polygon Action script (flash)

0 komentar


بِسْــــــــــــــــمِ اﷲِالرَّحْمَنِ اارَّحِيم
bismillaahirrahmaanirrahiim

السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ
Assalamu'alaikum warahmatullahi wabarakatuh

I wanted to make the texture of the road in my makeshift game. I was able to make the texture, but it was of low quality. The stones on the pavement were too big. I have had two ways. Do the texture of the best quality, but the game became more megabytes. The other way is to smash the geometry of the road to a greater number of polygons. I decided to break the four vertices of a polygon on their own. I had an interesting programming effect break a big one for many small using my simple code here it is. The program can change the number of parts and using the mouse you can drag the nodes of the four squares.



package
{
import flash.display.*;
import flash.events.*;
import flash.geom.Point;
import flash.geom.Vector3D;
import flash.text.TextField;
/** * ... * @author Alex Lexcuk */
public class Doc extends Sprite
{
private const MAX_GRIP:int = 5;
private var mousePressedTr:Boolean;
private var gripArr:Vector.<Sprite>;
private var curSpIndx:int;
private var startMousePoint:Point = new Point();
private var dragStartPoint:Point = new Point();
private var txtNav:TextField;
private var maxGripDraw:int = 4;
private var txt:TextField;
private var vA:Vector3D = new Vector3D();
private var vB:Vector3D = new Vector3D();
private var rectCount:uint;
private var distortParam:int = 7;
public function Doc()
{
addChild(txtNav = new TextField());
addChild(txt = new TextField());
txt.x = 100;
txt.border = txtNav.border = true;
txt.width = txtNav.width = 100;
txt.height = txtNav.height = 25;
txtNav.htmlText =
"<a href='event:3'><u>3</u></a> <a href='event:4'><u>4</u></a> " +
"<a href='event:5'><u>5</u></a> <a href='event:6'><u>6</u></a> " +
"<a href='event:7'><u>7</u></a> <a href='event:8'><u>8</u></a> " +
"<a href='event:9'><u>9</u></a> <a href='event:10'><u>10</u></a> ";
txtNav.addEventListener("link", txtNavHandler);
var i:int;
gripArr = new Vector.<Sprite>();
for (i = 0; i < MAX_GRIP - 1; i++) addGrip();
addGrip(false);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
updateDraw();
}
private function txtNavHandler(e:TextEvent):void {
distortParam = int(e.text);
updateDraw();
updateDistort();
}

//? ???????? ?? ?????
private function inPolygon(vIn:Vector3D, poly:Vector.<Vector3D>):Boolean
{
var verticeCount:uint = poly.length;
var p:Vector3D;
var MATCH_FACTOR:Number = 0.95;
var angle:Number = 0.0;
for (var i:int = 0; i < verticeCount; i++) {
p = poly[i];
vA.x = p.x - vIn.x;
vA.y = p.y - vIn.y;
vA.z = p.z - vIn.z;
p = poly[(i + 1) % verticeCount];
vB.x = p.x - vIn.x;
vB.y = p.y - vIn.y;
vB.z = p.z - vIn.z;
angle += Vector3D.angleBetween(vA, vB);
//trace('angle '+angle);
}
if (angle >= (MATCH_FACTOR * (2.0 * Math.PI)) ) return true;
return false;
}


private function updateDraw():void {
graphics.clear();
graphics.lineStyle(0);
var i:int;
graphics.moveTo(gripArr[0].x, gripArr[0].y);
for (i = 0; i < maxGripDraw; i++) {
graphics.lineTo(gripArr[i].x, gripArr[i].y);
}
graphics.lineTo(gripArr[0].x, gripArr[0].y);
var polyCoordV:Vector.<Vector3D> = new Vector.<Vector3D>();
for (i = 0; i < maxGripDraw; i++) {
polyCoordV.push(new Vector3D(gripArr[i].x, gripArr[i].y));
}
txt.text = '' + inPolygon(
new Vector3D(gripArr[MAX_GRIP - 1].x, gripArr[MAX_GRIP - 1].y),
polyCoordV);
}

private function mouseDownHandler(e:MouseEvent):void {
mousePressedTr = true;
var i:int;
var mousePoint:Point = new Point(mouseX, mouseY);
var dist:Number = int.MAX_VALUE;
var minI:int;
for (i = 0; i < MAX_GRIP; i++) {
if (dist > Math.min(
Point.distance(new Point(gripArr[i].x, gripArr[i].y), mousePoint))
)
{
dist = Point.distance(
new Point(gripArr[i].x, gripArr[i].y), mousePoint);
minI = i;
}
}
curSpIndx = minI;
startMousePoint = mousePoint;
dragStartPoint = new Point(gripArr[curSpIndx].x, gripArr[curSpIndx].y)
}

private function mouseUpHandler(e:MouseEvent):void {
mousePressedTr = false;
}

private function enterFrameHandler(e:Event):void {
var dx:Number;
var dy:Number;
var sp:Sprite = gripArr[curSpIndx];
if (mousePressedTr) {
dx = mouseX - startMousePoint.x;
dy = mouseY - startMousePoint.y;
sp.x = dragStartPoint.x + dx;
sp.y = dragStartPoint.y + dy;
updateDraw();
updateDistort();
}
}


private function addGrip(rectTr:Boolean = true):void {
var sp:Sprite;
sp = new Sprite();
sp.graphics.lineStyle(0);
sp.graphics.beginFill(0, 0.5);
if (rectTr) sp.graphics.drawRect( -3, -3, 6, 6);
else
sp.graphics.drawCircle(0, 0, 3);
sp.x = 10 + 550 * Math.random();
sp.y = 10 + 400 * Math.random();
gripArr.push(sp);
addChild(sp);
}

private function distortLine(a:Point, b:Point, distortParam:int = 2):Vector.<Point> {
var ab:Point = a.clone();
ab = ab.subtract(b);
var leng:Number = ab.length;
var vp:Vector.<Point> = new Vector.<Point>();
var i:int;
var p:Point;
ab.normalize(1);
for (i = 0; i <= distortParam; i++) {
p = new Point();
p.x = ab.x * (leng / distortParam) * i;
p.y = ab.y * (leng / distortParam) * i;
p = p.add(b);
vp.push(p);
}
return vp;
}

private function updateDistort():void {
var a:Point = new Point(gripArr[0].x, gripArr[0].y);
var b:Point = new Point(gripArr[1].x, gripArr[1].y);
var c:Point = new Point(gripArr[2].x, gripArr[2].y);
var d:Point = new Point(gripArr[3].x, gripArr[3].y);

var pv:Vector.<Point> = distortLine(a, b, 2);
graphics.moveTo(a.x, a.y);
graphics.lineStyle(2, 0xFF8000);
graphics.lineTo(b.x, b.y);

var i:int;
//var distortParam:int = 7;

var ab:Vector.<Point> = distortLine(a, b, distortParam);
var cd:Vector.<Point> = distortLine(d, c, distortParam);

var abe:Vector.<Vector.<Point>> = new Vector.<Vector.<Point>>();

var e:Vector.<Point>;
for (i = 0; i < ab.length; i++) {
e = distortLine(ab[i], cd[i], distortParam);
abe.push(e);
}
var j:int;
for (i = 0; i < abe.length; i++) {
for (j = 0; j < abe[i].length; j++) {
graphics.drawCircle(abe[i][j].x, abe[i][j].y, 5+Math.random()*3);
}
}
graphics.lineStyle(10, 0xFF0000)

if (rectCount >= distortParam * distortParam) rectCount = 0;

var xo:int = rectCount % distortParam;//distortParam-1 ??? ???????????? ????????
var yo:int = rectCount/distortParam;


graphics.moveTo(abe[yo][xo].x, abe[yo][xo].y);
graphics.lineTo(abe[yo+1][xo].x, abe[yo+1][xo].y);
graphics.lineTo(abe[yo+1][xo+1].x, abe[yo+1][xo+1].y);
graphics.lineTo(abe[yo][xo+1].x, abe[yo][xo+1].y);
graphics.lineTo(abe[yo][xo].x, abe[yo][xo].y);

rectCount++;

}


}
}

source code of this one
Update Contact :
No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email : Fajarudinsidik@gmail.com
NB :: Bila Sobat tertarik Ingin membuat software, membeli software, membeli source code, membeli hardware elektronika untuk kepentingan Perusahaan maupun Tugas Akhir (TA/SKRIPSI), Insyaallah Saya siap membantu, untuk Respon Cepat dapat menghubungi kami, melalui :

No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email: Fajarudinsidik@gmail.com


atau Kirimkan Private messanger melalui email dengan klik tombol order dibawah ini :

ٱلْحَمْدُ لِلَّهِ رَبِّ ٱلْعَٰلَمِين
Alhamdulilah hirobil alamin

وَ السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ
wassalamualaikum warahmatullahi wabarakatuh


Artikel as3 how to distort or smash 4x polygon Action script (flash), Diterbitkan oleh scodeaplikasi pada Sabtu, 17 November 2012. Semoga artikel ini dapat menambah wawasan Anda. Website ini dipost dari beberapa sumber, bisa cek disini sumber, Sobat diperbolehkan mengcopy paste / menyebar luaskan artikel ini, karena segala yang dipost di public adalah milik public. Bila Sobat tertarik Ingin membuat software, membeli software, membeli source code ,Dengan Cara menghubungi saya Ke Email: Fajarudinsidik@gmail.com, atau No Hp/WA : (fajar) : 085369237896, (puat) : 085267792168.

Tawk.to