vinTagesworld Flash forum

Stel zelf een vraag in het flash forum!


image copieren en scalen met flash
blokje door vinTage op 04-04-08 om 16:08
Hoi, in mn poging om AS3 wat beter te leren heb ik een vaag geval gemaakt wat eigenlijk kei nutteloos is

Het is eigenlijk te min om in de schowcase te zetten, maar ook weer te bruikbaar om zomaar weg te gooien, dus wil ik jullie dit toch even tonen.

Maak een nieuwe actionscript3 file aan van ongeveer 1000/500 px breed/hoog en plant de volgende code erin en spelen maar.


edit een late dit, maar blijkbaar snapt niet iedereen dit conceptje..
copy paste de code, en klik/drag met je muis op het ingeladen plaatje..de copy (verschijnt rechts) kan je risizen met het textveld (nummers only (met evt een punt voor de decimalen))

eventueel het pad naar de image aanpassen

actionscript code

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFieldType;

//vars declareren
var startX:Number;
var startY:Number;
var endX:Number;
var endY:Number;
var slepen:Boolean = false;
var zichtbaar:Boolean = false;

//image inladen
var lader:Loader = new Loader();
lader.load(new URLRequest("http://blog.syracuse.com/zoo/2007/08/large_Lorikeet_AnnieStraight.jpg"));
addChild(lader);

//shape om het geselcteerde gedeelte te tonen
var selectie:Shape = new Shape();
addChild(selectie);

//mouse events toekennen
lader.addEventListener(MouseEvent.MOUSE_DOWN, tekenen);
lader.addEventListener(MouseEvent.MOUSE_UP, tekenen);
lader.addEventListener(MouseEvent.MOUSE_MOVE, tekenen);

//na inladen de textbox positioneren onder de ingeladen image
lader.contentLoaderInfo.addEventListener(Event.COMPLETE, positioneerTekstVeld);

//textveld maken om in te geven naar welke afmeting iets geschaald moet worden
var t:TextField = new TextField();
//inputveld van maken
t.type = "input";
t.border = true;
t.height = 20;
t.width = 350;
//alleen nummers kunnen typen
t.restrict = "0-9\.";
t.text = "Vul hier nummers in om de gecopierde versie te resizen bv: 57.4";
addChild(t);
//listener aanhangen
t.addEventListener(Event.CHANGE, schalen);

function tekenen(event:MouseEvent):void
{
  if (event.type == "mouseDown")
  {
    selectie.graphics.clear();
    startX = mouseX;
    startY = mouseY;
    slepen = true;
  }
  if (event.type == "mouseUp")
  {
    slepen = false;
    copieren();
  }
  if (event.type == "mouseMove")
  {
    if (slepen)
    {
      endX = mouseX;
      endY = mouseY;
      selectie.graphics.clear();
      selectie.graphics.lineStyle(0, 0x00ff00,1);
      selectie.graphics.beginFill(0x00ff00, 0.2);
      selectie.graphics.moveTo(startX, startY);
      selectie.graphics.lineTo(endX, startY);
      selectie.graphics.lineTo(endX, endY);
      selectie.graphics.lineTo(startX, endY);
      selectie.graphics.lineTo(startX, startY);
      selectie.graphics.endFill();
    }
  }
}


function copieren()
{
  //eerst de x en y posities ordenen,
  //omdat je anders alleen van links naar rechts en boven naar beneden kan kopieren
  var startCopyX:Number = (startX < endX) ? startX : endX;
  var startCopyY:Number = (startY < endY) ? startY : endY;
  var breed:Number = selectie.width;
  var hoog:Number = selectie.height;

  //foutmelding voorkomen als je niks selecteerd
  if (!hoog || !breed)
  {
    //trace("niks geselecteerd");
  }
  else
  {
    //bitmap maken van de loader inhoud
    var contentHouder:Bitmap = Bitmap(lader.content);
    var contentHouderData:BitmapData = contentHouder.bitmapData;
    var pt:Point = new Point(0, 0);
    var copy:BitmapData = new BitmapData(breed, hoog, true);
    copy.copyPixels(contentHouderData, new Rectangle(startCopyX, startCopyY, breed, hoog), pt);

    //vorige copy verwijderen
    if (zichtbaar)
    {
      removeChild(getChildByName("eindClip") );
    }

    var eindClip:Bitmap = new Bitmap(copy);
    //masterlijke optie..niet vergroten met pixels, maar écht smooth !
    eindClip.smoothing = true;
    //naam geven aan de copy
    eindClip.name = "eindClip";

    //positioneren en plaatsen
    eindClip.x = lader.width+20;
    addChild(eindClip);
    //zichtbaar zetten om later "eindClip" te kunnen verwijderen zonder foutmelding
    zichtbaar = true;
  }
}

//de textbox plaatsen onder de ingeladen image
function positioneerTekstVeld(event:Event)
{
  t.y = event.target.height + 10;
}

//als de textbox inhoud veranderd word, de copy resizen adhv de inhoud van de textbox
function schalen(e:Event)
{
  //trace(e.target.text)
  if (zichtbaar)
  {
    getChildByName("eindClip").width = Number(e.target.text);
    getChildByName("eindClip").scaleY = getChildByName("eindClip").scaleX;
  }
}
 


Als jullie ook van dit soort prutsen hebben, aarzel dan niet om ze ook in het forum te zetten, een en ander kan nog leuke nuttige stukjes code bevatten om in de scriptbase te zetten.
Zo heb ik de "teken" functie er ook ingezet.


laatst ge-edit op: 04-04-08 om 23:28


Reply
blokje door W0utah op 04-04-08 om 16:37
zeer leuk, maar zoals je zelf al vertelde, vrij nutteloos.

Ik heb echt geen idee voor wat ik het ooit zou gebruiken

EDIT: ik heb mijn flash chat geupload op de scriptbase, ik hoop dat jij hem werkend krijg want voor sommige mensen blijkt dit een helse klus te zijn

laatst ge-edit op: 04-04-08 om 16:43
Reply
blokje door vinTage op 04-04-08 om 22:29
elo, ja idd nutteloos, maar wel een leuke oefening/opgave toch ?

Ik zal je script eerdaags bekijken, maar ik denk dat het beter is als je dit in een tutorial zou willen kieperen, omdat je gebruik maakt van meerdere scripts/objecten etc (het is niet copy/paste, dus meer dan een scriptje), zie je dit eventueel zitten ?

edit
: voor ik het vergeet te zeggen : Bedankt voor je inzet! Als iedereen alleen maar copy/paste word de scriptbase er ook niet vetter op

laatst ge-edit op: 04-04-08 om 22:30
Reply
blokje door W0utah op 04-04-08 om 22:38
Een tutorial van maken?

fvieuw, als ik tijd / zin heb zal ik het misschien doen.

Flash komt precies in tijden bij mij, soms heb ik gewoon geen zin om nog maar flash te openen en soms kan ik er niet afblijven.

 
Reply
blokje door vinTage op 04-04-08 om 22:54
Zoals je mss wel/niet weet, hoef je een tut op deze site niet in één keer in te dienen, het word gewoon gesaved, en ja kan hem editten/aanpassen totdat ik de tut goedkeur

update:
Ik heb je script gedownload en hier geinstaleerd (niet zonder problemen)
Ten eerste zijn te textbestanden zowat onleesbaar voor mensen op windows (komt denk ik doordat jij een specifiek mac prog hebt gebruikt om die txt te maken?)
Verder, als ik het online plaats blijf je die welFormed errors houden, op te lossen door getMessages.php een klein beetje aan te passen:

php code

header('Content-type: text/xml');
echo "<?xml version='1.0' encoding='iso-8859-1'?>\n";
echo "<chatbox>\n";
// connecter to the database
include('config.php');
//rest van dat script
echo "</chatbox>\n";
?>
 


Er is ook nog iets mis met de online check, ik connect een keer via FF en een keer via IE, maar beide geven me een fout overzicht van users, ze tonen beide nog de online leden van een vorig testje, maar niet de nieuwe.

edit
Dat online gedoe was gedeeltelijk mijn fout, door die onduidelijke txt, had ik gemist dat er een default waarde was voor status, dat heb ik nu ingevoerd, maar het werkt nog niet perfect, bij degene die eerst online was komt de nieuwe gast er niet bij (mss na X tijd, maar daar heb ik niet op gewacht :D )

edit
Ik heb een nieuwe zip gemaakt en geupload (via ftp, want eigenlijk mogen de uploads maar 75kb zijn)
Zodra het script goedgekeurd is vind je die zip terug in de scriptbase post.

Met jouw goedkeuring zet ik dit dus met een klikje online, laat maar weten :)

laatst ge-edit op: 05-04-08 om 12:56
Reply
blokje door W0utah op 05-04-08 om 13:04
Van mij mag je het online zetten hoor, anders zou ik het toch niet uploaden voor de scriptbase

En die online lijst, het is mij ook opgevallen dat hij niet direct refreshed wanneer iemand online komt, maar pas een tijdje later.

Moet ik die read me ff opnieuw maken en opslaan als een .doc ofzo?
Ik denk dat ik het gewoon standaard heb opgeslagen als een .rtf


In .docx formaat
http://mt11.quickshareit.com/share/readmeeb0ca.docx

 
Reply
blokje door vinTage op 05-04-08 om 13:06
Kan je die txt hier posten, want die url kan ik ook niet openen :P
Ik zal die dan wel in een txtfiletje zetten en bij in de zip zetten.

 
Reply
blokje door W0utah op 05-04-08 om 13:10
normaal zou hij die file direct moeten downloaden.

Sorry voor het engels, maar dit was eigenlijk bedoeld voor op flashden te zetten, maar de revieuwer kreeg het na 3 keer proberen niet werkend dus heb ik het daar opgegeven

quote :

How to use the flash chat?
____________________

- This chat is very easy to use, you can just place the flashChat.swf in a webpage or popup.
- Make sure all the files are in the same folder as the flashChat.swf.



How do i install flash chat?
____________________

- First you open "config.php" in a texteditor, on the first 2 lines, you see a bit of code wich looks like this:
mysql_connect("localhost", "root", "root") or die("Cannot connect to localhost");
mysql_select_db("flashChat") or die("No database selected");

This is the code to connect do ur database, so make sure you fill in ur username and password and change the database name.

- Next u open "post.php", on line 6 u see the line of code:
if($_GET['secretWord'] == "insertasecretwordhere") {

- This is a secrew word that flash sends to the php file so u cannot acces the php file directly from the browser, unless you know the word, sow the best is u change this to one of the hardests words u've ever heard.
Or just a random combination.

- Next you open "flashChat.fla", on line 140 you see this line:
variables.secretWord = "insertasecretwordhere";
You need to instert the same word as you typed in the php file.

- In "flashChat.fla" go to line 17 where you see this line of code:
var urlToFiles:String = "http://www.urlhere.com/flashChat/V1/";
change this to the url of your website and map where the chat is located, don't forget to put an / at the end

- The next step if VERY IMPORTANT, i have included a file called "mysql.txt", this is the mysql that you need to insert into ur database.
- The first thing you do is go to ur phpMyAdmin (on localhost or server), you need to create a new database called "flashChat" (or you can choose ur own name).
- Then you open the file "mysql.txt", and you insert the 2 tables into the just created database.


How do adjust some settings?
_______________________

-Their are some basic settings u can easely adjust.

- Open config.php, on line 14 you can see this:
$time = time() - 300;
The members status will be putted to iddle if he hasn't posted in the past 3 minutes, you can change this to 5 or to whatever you want.
The same you can do for line 17.


- You can also adjust some settings in the .fla, i putted comment what you can do with some variables.


 
Reply
blokje door vinTage op 05-04-08 om 13:17
Ik kon hem wel downloaden, maar openen zorgde helemaal voor een onleesbaar iets :)
Je script staat online

Nu de files leesbaar zijn zal het hem mss wel lukken ?

 
Dit topic is gesloten.