Eredmény: 1 - 5 (5) összesen

Téma: ActionScript segítség

  1. #1
    Új tag
    Csatlakozott
    10-03-19
    Hozzászólás
    20
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás ActionScript segítség

    Sziasztok!

    Egy kis segítséget szeretnék ActionScript 2 terén. Abszolút nem vagyok értője a témának, úgyhogy megpróbálom szájbarágósan elmondani a problemát.

    Szóval van egy kis weboldalam, ahol gyerekek számára található flash kifestők vannak. A kifestő játékok el vannak látva olyan funkcióval, hogy azok egy gomb nyomásával kinyomtathatók, de csak maga a kifestő terület, a színező paletta már nem nyomtatódik. Mint mondtam, nem vagyok AS értő, úgyhogy ezt a nyomtató megoldást is úgy guberáltam össze neten, ami valahogy így néz ki:

    A nyomtatandó terület:

    //print function
    function PrintFunc(WhatToPrint:Array) {
    var PrintQueue = new PrintJob();
    var PrintStart:Boolean = PrintQueue.start();
    if (PrintStart) {
    for (i=0; i<=WhatToPrint.length; i++) {
    PrintQueue.addPage(WhatToPrint[i]);
    }
    PrintQueue.send();
    }
    }
    //Prints Specific MovieClips
    //PrintWhat([MCPrint]);



    És a gomb, amivel ezt nyomtatni lehet:

    on (release) {
    // example of printing multiple clips:
    //PrintWhat([print_this, print_this2, etc]);

    PrintFunc([print_this]);
    }



    Na, most a kérdésem az volna, hogy valami hasonlóan egyszerű módszerrel (gomb lenyomására) megoldható-e az, hogy ezt a területet (a kiszínezett kifestőt) jpg-ként fájlba mentsék a kölykök? A tippeket, ötleteket előre is köszönöm!



  2. #2
    Új tag
    Csatlakozott
    09-12-24
    Hozzászólás
    32
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: ActionScript segítség

    Annyira nagyon én sem értek hozzá, de ezt a legegyszerűbben szerintem PHP használatával tudnád megvalósítani:

    PHP (ezt nem is nagyon kellene szerintem bántani):
    show_image.php
    PHP kód:
    <?php
        $data 
    explode(","$_POST['img']);
        
    $width $_POST['width'];
        
    $height $_POST['height'];
        
    $image=imagecreatetruecolor$width ,$height );
        
    $background imagecolorallocate$image ,);
        
    //Copy pixels
        
    $i 0;
        for(
    $x=0$x<=$width$x++){
            for(
    $y=0$y<=$height$y++){
                
    $int hexdec($data[$i++]);
                
    $color ImageColorAllocate ($image0xFF & ($int >> 0x10), 0xFF & ($int >> 0x8), 0xFF $int);
                
    imagesetpixel $image $x $y $color );
            }
        }
        
    //Output image and clean
        
    header"Content-type: image/jpeg" );
        
    ImageJPEG$image );
        
    imagedestroy$image );    
    ?>
    Hozzá tartozó ActionScript (ebből ollózd ki ami kell)
    Kód:
    import flash.display.BitmapData;
    shaF.onPress = function() {
        output();
    };
    function output() {
        snap = new BitmapData(mc._width, mc._height);
        snap.draw(mc);
        var pixels:Array = new Array();
        var w:Number = snap.width;
        var h:Number = snap.height;
        for (var a = 0; a<=w; a++) {
            for (var b = 0; b<=h; b++) {
                var tmp = snap.getPixel(a, b).toString(16);
                pixels.push(tmp);
            }
        }
        var output:LoadVars = new LoadVars();
        output.img = pixels.toString();
        output.height = h;
        output.width = w;
        output.send("show_image.php", "output", "POST");
    }
    stop();




  3. #3
    Új tag
    Csatlakozott
    10-11-07
    Hozzászólás
    2
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: ActionScript segítség

    Hellósztok.

    Van egy kódom, egy egyszerű 3d motor.
    az objektumok oldallapjait a következő módon határozza meg:
    Kód:
    cube.side.push([0, 1, 2, 3]);
    tehát a benne lévő számok a kirajzolandó objektum pontjainak a sorszámát
    jelenti, és egy "function" ban "lineto" paranccsal köti össze (akárhány számot beírhatok ide).
    A következő lenne a kérdésem:
    hogy lehetne megoldani, hogy egy számlálós ciklus változója legyen beleírva.
    próbáltam egy változóba gyűjteni, aztán beleíratni, illetve próbáltam átkonvertálni szám típusba, de sehogy sem fogadja el, csak és kizárólag úgy
    ha szépen begépelem az összes koordinátát a forráskódba(az meg nem éppen valami hatékony).

    A válaszokat előre is köszi.
    itt van az egész kód, ha valaki kíváncsi lenne rá(egy házikót formál, as 2-ben íródott):
    Kód:
    
    this.createEmptyMovieClip("center",0);
    
    //center._x = _xmouse;
    //center._y = _ymouse;
    //gyujó pont meghatározása
    focalLength = 800;
    ize=0;
    //------
    //kocka vagy más objektum koordinátáinak a helye
    cube = {};
    cube.vertexList = [];
    
    
    cube.vertexList.push({x:-50, y:-50, z:50});
    cube.vertexList.push({x:50, y:-50, z:50});
    cube.vertexList.push({x:50, y:-50, z:-50});
    cube.vertexList.push({x:-50, y:-50, z:-50});
    cube.vertexList.push({x:-50, y:50, z:50});
    cube.vertexList.push({x:50, y:50, z:50});
    cube.vertexList.push({x:50, y:50, z:-50});
    cube.vertexList.push({x:-50, y:50, z:-50});
    cube.vertexList.push({x:0, y:-100, z:50});
    cube.vertexList.push({x:0, y:-100, z:-50});
    //ajtó
    cube.vertexList.push({x:0, y:20, z:50});
    cube.vertexList.push({x:0, y:50, z:50});
    
    cube.vertexList.push({x:20, y:50, z:50});
    
    cube.vertexList.push({x:20, y:20, z:50});
    
    //ablak2
    cube.vertexList.push({x:20, y:-10, z:51});
    cube.vertexList.push({x:20, y:10, z:51});
    
    cube.vertexList.push({x:40, y:10, z:51});
    
    cube.vertexList.push({x:40, y:-10, z:51});
    //ablak1
    cube.vertexList.push({x:-30, y:-10, z:51});
    cube.vertexList.push({x:-30, y:10, z:51});
    
    cube.vertexList.push({x:-10, y:10, z:51});
    
    cube.vertexList.push({x:-10, y:-10, z:51});
    
    //kocka vonalai(lapjai)
    cube.side = [];
    cube.side.push([1, 2, 9, 8]);
    cube.side.push([3, 0, 8, 9]);
    cube.side.push([0, 1, 2, 3]);
    
    
    cube.side.push([2, 1, 5, 6]);
    cube.side.push([1, 0, 4, 5]);
    cube.side.push([5, 4, 7, 6]);
    cube.side.push([0, 3, 7, 4]);
    cube.side.push([3, 2, 6, 7]);
    cube.side.push([10, 11, 12, 13]);
    cube.side.push([14, 15, 16, 17]);
    cube.side.push([18, 19, 20, 21]);
    
    
    
    
    
    render = function (model)
    {
    	if (transformMatrix)
    	{
    		for (var i = 0; i < model.vertexList.length; i++)
    		{
    			var vert = model.vertexList[i];
    			var x = transformMatrix.a * vert.x + transformMatrix.b * vert.y + transformMatrix.c * vert.z;
    			var y = transformMatrix.d * vert.x + transformMatrix.e * vert.y + transformMatrix.f * vert.z;
    			var z = transformMatrix.g * vert.x + transformMatrix.h * vert.y + transformMatrix.i * vert.z;
    			vert.x = x;
    			vert.y = y;
    			vert.z = z;
    		}
    		delete transformMatrix;
    	}
    	center.clear();
    	
    	center.lineStyle(2,0x00bb00,40);
    	//(vonalvastagság, rgb színkód,pixel átlátszóság)
    	verts2D = [];
    	depthArray = [];
    	for (var i = 0; i < model.side.length; i++)
    	{
    		var zDepth = 0;
    		for (var j = 0; j < model.side[i].length; j++)
    		{
    			var whichVert = model.side[i][j];
    			if (verts2D[whichVert] == undefined)
    			{
    				verts2D[whichVert] = {};
    				var scale = focalLength / (focalLength - model.vertexList[whichVert].z);
    				verts2D[whichVert].x = model.vertexList[whichVert].x * scale;
    				verts2D[whichVert].y = model.vertexList[whichVert].y * scale;
    			}
    			zDepth += model.vertexList[whichVert].z;
    		}
    		depthArray.push([model.side[i], zDepth]);
    	}
    	depthArray.sort(function (a, b)
    	{
    	return a[1] > b[1];
    	});
    	for (var i = 0; i < depthArray.length; i++)
    	{
    		var sideVerts = depthArray[i][0];
    		center.moveTo(verts2D[sideVerts[0]].x,verts2D[sideVerts[0]].y);
    		center.beginFill(0x000000,60);
    		//kitöltés(rgb színkód, alfa) 		
    		for (var j = 1; j < sideVerts.length; j++)
    		{
    			center.lineTo(verts2D[sideVerts[j]].x,verts2D[sideVerts[j]].y);
    		}
    		center.lineTo(verts2D[sideVerts[0]].x,verts2D[sideVerts[0]].y);
    		center.endFill();
    	}
    };
    
    
    
    //------
    //objetum tranzformáció (forgatás, méretezés)
    rotateX = function (model, degree)
    {
    	var rad = degree * Math.PI / 180;
    	var sin = Math.sin(rad);
    	var cos = Math.cos(rad);
    	var matrix = {a:1, b:0, c:0, d:0, e:cos, f:sin, g:0, h:-sin, i:cos};
    	transform(matrix,model);
    };
    
    rotateY = function (model, degree)
    {
    	var rad = degree * Math.PI / 180;
    	var sin = Math.sin(rad);
    	var cos = Math.cos(rad);
    	var matrix = {a:cos, b:0, c:-sin, d:0, e:1, f:0, g:sin, h:0, i:cos};
    	transform(matrix,model);
    };
    
    rotateZ = function (model, degree)
    {
    	var rad = degree * Math.PI / 180;
    	var sin = Math.sin(rad);
    	var cos = Math.cos(rad);
    	var matrix = {a:cos, b:sin, c:0, d:-sin, e:cos, f:0, g:0, h:0, i:1};
    	transform(matrix,model);
    };
    
    scale = function (model, percent)
    {
    	var rad = degree * Math.PI / 180;
    	var matrix = {a:percent, b:0, c:0, d:0, e:percent, f:0, g:0, h:0, i:percent};
    	transform(matrix,model);
    };
    //------
    //mátrix tranzformáció
    
    transform = function (matrix, model)
    {
    	if (transformMatrix)
    	{
    		var a = matrix.a * transformMatrix.a + matrix.b * transformMatrix.d + matrix.c * transformMatrix.g;
    		var b = matrix.a * transformMatrix.b + matrix.b * transformMatrix.e + matrix.c * transformMatrix.h;
    		var c = matrix.a * transformMatrix.c + matrix.b * transformMatrix.f + matrix.c * transformMatrix.i;
    		var d = matrix.d * transformMatrix.a + matrix.e * transformMatrix.d + matrix.f * transformMatrix.g;
    		var e = matrix.d * transformMatrix.b + matrix.e * transformMatrix.e + matrix.f * transformMatrix.h;
    		var f = matrix.d * transformMatrix.c + matrix.e * transformMatrix.f + matrix.f * transformMatrix.i;
    		var g = matrix.g * transformMatrix.a + matrix.h * transformMatrix.d + matrix.i * transformMatrix.g;
    		var h = matrix.g * transformMatrix.b + matrix.h * transformMatrix.e + matrix.i * transformMatrix.h;
    		var i = matrix.g * transformMatrix.c + matrix.h * transformMatrix.f + matrix.i * transformMatrix.i;
    		transformMatrix = {a:a, b:b, c:c, d:d, e:e, f:f, g:g, h:h, i:i};
    	}
    	else
    	{
    		transformMatrix = matrix;
    	}
    };
    //------
    //vérgre hajtó rész
    center.onEnterFrame = function()
    {
    
    	rotateX(cube,2);
    	rotateY(cube,2);
    	rotateZ(cube,2);
       //scale (cube, 0.99)
    	render(cube);
    center._x = _xmouse;
    center._y = _ymouse;
    
    
    };




  4. #4
    Új tag
    Csatlakozott
    10-11-07
    Hozzászólás
    2
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: ActionScript segítség

    Már megoldottam...

    a számokat belegyűjtöm egy másik tömbbe, és azt illesztem bele.



  5. #5
    Új tag
    Csatlakozott
    12-09-20
    Hozzászólás
    1
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: ActionScript segítség

    Sziasztok!
    Egy Magyar nyelvű textbox alapú szöveges kalandjátékot fejlesztek, AS2-ben, beírós félét, mint a régiek voltak.
    A problémám a következő:

    Van három változó amik jelen esetben varázsigék.
    Nos, a három változó közül egyet tudok figyeltetni, de a másik kettőt nem.
    Tehát egyszerre kellene mindhármat figyelnie.

    A változók: rohoriel, sctuctum, frumentum

    A probléma tehát:
    vizsgálni szeretném mindhármat egyszerre, tehát amikor beírja valaki az igék valamelyikét, akkor figyelje a változókat
    és ennek arányában ugorjon a megfelelő parancsra.

    Konkrétan:

    Kód:
    else if (
    _root.password == "használom a varázsigét: sctuctum" ||
    _root.password == "használom a varázsigét: rohoriel" ||
    _root.password == "használom a varázsigét: frumentum")
    {
    _root.valaszok.gotoAndStop("nincsiged"); // Itt alapban ugye azt írja: nincs ilyen ige a birtokunkban!
    Bármilyen igét is írunk be.
    		 
    }
    
    //  ITT figyelem a változó értékét, tehát ha pl: frumentum egyenlő egyel, akkor írja azt:
    Nem történt semmi. A többinél is ezt szeretném!
    
    if (_root.frumentum == 1 )
    {
     _root.valaszok.gotoAndStop("nemtortentsemmi");
    }
    Ez így működik is, de csak egy változót képes figyelni egyszerre, a többi kettőt nem, hiába
    csinálom a fenti írás mentén, ha egy változó is már egyesen van, a többi nullás változóhoz
    is azt írja akkor már, hogy: Nem történt semmi. Tehát amikor beírom azt a varázsigét ami még
    nullás, de valamelyik már egyesen van, a nullás értékeket is egyesnek veszi.
    Tehát ez így nem működik:

    Kód:
    else if (
    _root.password == "használom a varázsigét: sctuctum" ||
    _root.password == "használom a varázsigét: rohoriel" ||
    _root.password == "használom a varázsigét: frumentum")
    {
    _root.valaszok.gotoAndStop("nincsiged"); // Itt alapban ugye azt írja: nincs ilyen ige a birtokunkban!
    }
    if (_root.frumentum == 1 ) 
    {
     _root.valaszok.gotoAndStop("nemtortentsemmi");
    }
    if (_root.sctuctum == 1 )
    {
     _root.valaszok.gotoAndStop("nemtortentsemmi");
    }
    if (_root.rohoriel == 1 )
    {
     _root.valaszok.gotoAndStop("nemtortentsemmi");
    }
    Remélem elég érthetően leírtam, előre is köszönöm!
    Üdvüzlettel: Norbi



A téma címkéi:

Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •