2015-07-30 8 views
1

Я строил внутри Flash Builder и только начал изучать ActionScript около 1 часа назад; Кажется, я не могу найти хороший ресурс, чтобы быстро изучить эту тему. Основная цель, что должно быть простой задачей: получить эту вещь, чтобы отобразить изображение. Кажется, что изображение правильно загружено (оно, видимо, выяснило кодировку), и оно компилируется отлично, но все, что я получаю, это пустой белый экран, когда он загружается в firefox (Flash включен и работает нормально). Может ли кто-нибудь помочь? Заполните n00b здесь. Я хорошо разбираюсь в java, C#, c, html, php и т. П., Но полный actioncript/flash n00b.Как получить эту фреймворческую карту ActionScript 3, чтобы отобразить изображение, масштабировать и поместить его, сделать его интерактивным и перейти к URL-адресу?

package 
{ 
    import flash.display.Sprite; 
    import flash.display.Shape; 
    import flash.display.Bitmap; 

    public class images extends Sprite 
    { 
     public function images() 
     { 
      drawIcon(); 
     } 
     private var sp:Shape; 

     [Embed(source="E:/Documents/Shapemakr/ebayPics/July29_TreeImagesForFBbuilding/IMG_3294.JPG")] 
     private var contentIconClass:Class; 
     private var contentIcon:Bitmap = new contentIconClass(); 

     // ... 

     private function drawIcon():void{ 
      sp.graphics.beginBitmapFill(contentIcon.bitmapData); 
      sp.graphics.drawRect(20, 35, 13, 13); 
      sp.graphics.endFill(); 
     } 
    } 
} 

Хорошо, вот мой новый код. Похоже, он/должен/должен добавлять его в «фильм», но я ничего не вижу. Кажется, компилировать отлично (это изображение размером 1600x1200. Не уверен, что размер «маленькой значки» в программировании может иметь какое-то отношение к нему.).

package 
{ 
    import flash.display.Sprite; 
    import flash.display.Shape; 
    import flash.display.Bitmap; 
    import flash.display.BitmapData; 
    import flash.display.MovieClip; 

    public class images extends MovieClip 
    { 
     public function images() 
     { 
      drawIcon(); 
      //var defaultImage:libraryImages = new libraryImages(469, 60); 
      var myImage:Bitmap = contentIcon; 
      addChild(myImage); 
     } 
     private var sp:Shape; 

     [Embed(source="E:/Documents/Shapemakr/ebayPics/July29_TreeImagesForFBbuilding/IMG_3294.JPG")] 
     private var contentIconClass:Class; 
     private var contentIcon:Bitmap = new contentIconClass(); 

     private function drawIcon():void{ 
      sp.graphics.beginBitmapFill(contentIcon.bitmapData); 
      sp.graphics.drawRect(20, 35, 13, 13); 
      sp.graphics.endFill(); 
     } 
    } 
} 

Редактировать: Спасибо badfeelings! После изменения параметров размера в drawRect до размера изображения, он работает! Теперь просто нужно сжать изображение, загрузить его с URL-адреса и сделать его доступным для URL-адреса. Похоже, что это должно быть выполнимо, если я могу понять основы, которые я сейчас понимаю, с небольшим количеством поисковых запросов.

Новый код:

package 
{ 
    import flash.display.Sprite; 
    import flash.display.Shape; 
    import flash.display.Bitmap; 
    import flash.display.BitmapData; 
    import flash.display.MovieClip; 

    public class images extends MovieClip 
    { 
     public function images() 
     { 
      /* 
      drawIcon(); 
      //var defaultImage:libraryImages = new libraryImages(469, 60); 
      var myImage:Bitmap = contentIcon; 
      addChild(myImage);*/ 
      sp = new Shape(); //instantiate a new shape 
      addChild(sp); //add it to the display so it can be seen 
      drawIcon(); 
     } 
     private var sp:Shape; 

     [Embed(source="E:/Documents/Shapemakr/ebayPics/July29_TreeImagesForFBbuilding/IMG_3294.JPG")] 
     private var contentIconClass:Class; 
     private var contentIcon:Bitmap = new contentIconClass(); 

     private function drawIcon():void{ 
      sp.graphics.beginBitmapFill(contentIcon.bitmapData); 
      sp.graphics.drawRect(20, 35, 1600, 1200); 
      sp.graphics.endFill(); 
     } 
    } 
} 

Edit: Ого, еще раз спасибо! Этот новый код делает именно то, что мне нужно сделать, теперь мне просто нужно выяснить, как манипулировать загрузчиком, чтобы изменить размер и положение. Должно быть выполнимо с исследованиями/возиться, я уверен!

package 
{ 
    import flash.display.Sprite; 
    import flash.display.Shape; 
    import flash.display.Bitmap; 
    import flash.display.BitmapData; 
    import flash.display.MovieClip; 
    import flash.events.*; 
    import flash.net.*; 
    import flash.display.*; 

    public class images extends Sprite 
    { 

     public function images() 
     { 
      //to load an image, you can use the `Loader` class: 
      var loader:Loader = new Loader(); 
      loader.load(new URLRequest("http://www.shapemakr.com/image/mturk/IMG_3282.JPG")); 
      addChild(loader); 

      //it's good practice though to listen for COMPLETE, IO ERROR, and SECURITY error events on the loader in case something goes wrong. 

      //to listen for a click: 
      loader.addEventListener(MouseEvent.CLICK, myClickHandler); 
     } 

     function myClickHandler(e:Event):void { 
      navigateToURL(new URLRequest("http://www.adobe.com"), "_self");//do something, the image was clicked 
     } 

    } 
} 

Редактировать: Выяснено, как позиционировать изображение и масштабировать его. Ничего себе, этот класс Loader делает вещи простыми. Теперь мне просто нужно настроить его, чтобы как-то загрузить список изображений, их x/ys и связанные с ними URL-адреса. (Во всяком случае, да, мне неприятно вставлять весь мой код здесь, чтобы он мог помочь другому n00b в будущем. Ничего более бесит, чем неполный частичный код, который не работает, и не в состоянии понять, как заставить его работать из-за одни n00bness Имея рабочий пример, чтобы начать с очень помогает в процессе обучения, так как он может быть изменен, чтобы лучше понять/узнать оттуда)

package 
{ 
    import flash.display.Sprite; 
    import flash.display.Shape; 
    import flash.display.Bitmap; 
    import flash.display.BitmapData; 
    import flash.display.MovieClip; 
    import flash.events.*; 
    import flash.net.*; 
    import flash.display.*; 

    public class images extends Sprite 
    { 

     public function images() 
     { 
      stage.scaleMode=StageScaleMode.NO_SCALE; 
      stage.align=StageAlign.TOP_LEFT; 
      //to load an image, you can use the `Loader` class: 

      var loader:Loader = new Loader(); 
      loader.x = 50; loader.y=100; loader.scaleX=.3; loader.scaleY=.3; 
      //loader.mask = rect; 
      loader.load(new URLRequest("http://www.shapemakr.com/image/mturk/IMG_3282.JPG")); 
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete); 

      addChild(loader); 

      //it's good practice though to listen for COMPLETE, IO ERROR, and SECURITY error events on the loader in case something goes wrong. 

      //to listen for a click: 
      loader.addEventListener(MouseEvent.CLICK, myClickHandler); 
     } 

     function myClickHandler(e:Event):void { 
      navigateToURL(new URLRequest("http://www.adobe.com"), "_self");//do something, the image was clicked 
     } 

     private function loaderComplete(e:Event):void { 
      // now your image is fully loaded 
      trace(e.target.content.width); 
      // etc etc, whatever you need to do with your image prior to 
      // addressing it from elsewhere. 
     } 

    } 
} 

Edit:.. Просто сделал функцию что должно сделать загрузку списка Img-urls и связанных с ними URL-адресов GOTO. Также выясняется, что вы не можете перегружать функции в action-script3, по крайней мере, не условно, poo. Незначительные неудобства, я думаю.

package 
{ 
    import flash.display.*; 
    import flash.display.Bitmap; 
    import flash.display.BitmapData; 
    import flash.display.MovieClip; 
    import flash.display.Shape; 
    import flash.display.Sprite; 
    import flash.events.*; 
    import flash.net.*; 

    import flashx.textLayout.formats.Float; 

    public class images extends Sprite 
    { 

     public function images() 
     { 
      stage.scaleMode=StageScaleMode.NO_SCALE; 
      stage.align=StageAlign.TOP_LEFT; 

      loadClickImage(50,100,"http://www.shapemakr.com/image/mturk/IMG_3282.JPG","http://adobe.com"); 
      //loadClickScaleImage(50,100,.5,.5,"http://www.shapemakr.com/image/mturk/IMG_3282.JPG","http://adobe.com"); 
     } 

     function loadClickImage(x:int,y:int,imgurl:String,gotourl:String):void 
     { 
      loadClickScaleImage(x,y,1,1,imgurl,gotourl); 
     } 

     function loadClickScaleImage(x:int,y:int,scx:Number,scy:Number,imgurl:String,gotourl:String):void 
     { 
      //to load an image, you can use the `Loader` class: 
      var loader:Loader = new Loader(); 
      loader.x = x; loader.y=y; loader.scaleX=scx; loader.scaleY=scy; loader.name = gotourl; 
      //loader.mask = rect; 
      loader.load(new URLRequest(imgurl)); 
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete); 

      addChild(loader); 

      //to listen for a click: 
      loader.addEventListener(MouseEvent.CLICK, myClickHandler); 
     } 


     function myClickHandler(e:Event):void { 
      navigateToURL(new URLRequest(e.target.name), "_self");//do something, the image was clicked 
     } 

     function loaderComplete(e:Event):void { 
      // now your image is fully loaded 
      trace(e.target.content.width); 
     } 

    } 
} 

Edit: Для Шица и хихикает, вот весь источник интерактивной картинной галереи с соответствующими мышиным курсором эффектами. Я создал отличную программу на C#, чтобы создать соответствующий код AS3 для позиционирования и URL-адресов (весь код «LoadClickImage()»), чтобы сделать его полностью опрятным и организованным. Картинная галерея выглядит совершенно чудесно!

package 
{ 
    import flash.display.*; 
    import flash.display.Bitmap; 
    import flash.display.BitmapData; 
    import flash.display.MovieClip; 
    import flash.display.Shape; 
    import flash.display.Sprite; 
    import flash.events.*; 
    import flash.net.*; 
    import flash.ui.MouseCursor; 
    import flash.ui.Mouse; 

    public class images extends Sprite 
    { 
     var mouseIsDown:Boolean = false; 

     public function images() 
     { 
      stage.scaleMode=StageScaleMode.NO_SCALE; 
      stage.align=StageAlign.TOP_LEFT; 

      loadClickImage(0,0,"http://www.shapemakr.com/image/fotor/IMG_3294.JPG","http://adobe.com"); 
      loadClickImage(260,0,"http://www.shapemakr.com/image/fotor/IMG_3295.JPG","http://adobe.com"); 
      loadClickImage(520,0,"http://www.shapemakr.com/image/fotor/IMG_3296.JPG","http://adobe.com"); 
      loadClickImage(0,197,"http://www.shapemakr.com/image/fotor/IMG_3297.JPG","http://adobe.com"); 
      loadClickImage(260,197,"http://www.shapemakr.com/image/fotor/IMG_3298.JPG","http://adobe.com"); 
      loadClickImage(520,197,"http://www.shapemakr.com/image/fotor/IMG_3299.JPG","http://adobe.com"); 
      loadClickImage(0,394,"http://www.shapemakr.com/image/fotor/IMG_3300.JPG","http://adobe.com"); 
      loadClickImage(260,394,"http://www.shapemakr.com/image/fotor/IMG_3301.JPG","http://adobe.com"); 
      loadClickImage(520,394,"http://www.shapemakr.com/image/fotor/IMG_3302.JPG","http://adobe.com"); 
      loadClickImage(0,591,"http://www.shapemakr.com/image/fotor/IMG_3303.JPG","http://adobe.com"); 
      loadClickImage(260,591,"http://www.shapemakr.com/image/fotor/IMG_3304.JPG","http://adobe.com"); 
      loadClickImage(520,591,"http://www.shapemakr.com/image/fotor/IMG_3305.JPG","http://adobe.com"); 
      loadClickImage(0,788,"http://www.shapemakr.com/image/fotor/IMG_3306.JPG","http://adobe.com"); 
     } 

     function loadClickImage(x:int,y:int,imgurl:String,gotourl:String):void 
     { 
      loadClickScaleImage(x,y,1,1,imgurl,gotourl); 
     } 

     function loadClickScaleImage(x:int,y:int,scx:Number,scy:Number,imgurl:String,gotourl:String):void 
     { 
      //to load an image, you can use the `Loader` class: 
      var loader:Loader = new Loader(); 
      loader.x = x; loader.y=y; loader.scaleX=scx; loader.scaleY=scy; loader.name = gotourl; 
      //loader.mask = rect; 
      loader.load(new URLRequest(imgurl)); 
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete); 

      addChild(loader); 

      //to listen for a click: 
      loader.addEventListener(MouseEvent.CLICK, myClickHandler); 
      loader.addEventListener(MouseEvent.MOUSE_OVER, changeCursor); 
      loader.addEventListener(MouseEvent.MOUSE_OUT, resetCursor); 
     } 


     function myClickHandler(e:Event):void { 
      navigateToURL(new URLRequest(e.target.name), "_self");//do something, the image was clicked 
      //Mouse.cursor = MouseCursor. 
     } 

     private function changeCursor(e:MouseEvent) 
     { 
      Mouse.cursor = MouseCursor.BUTTON; 
     } 

     private function resetCursor(e:MouseEvent) 
     { 
      Mouse.cursor = MouseCursor.ARROW; 
     } 

     function loaderComplete(e:Event):void { 
      // now your image is fully loaded 
     // trace(e.target.content.width); 
     } 

    } 
} 

Редактировать: Добавлена ​​альфа-штриховка на мыши.

package 
{ 
    import flash.display.*; 
    import flash.display.Bitmap; 
    import flash.display.BitmapData; 
    import flash.display.MovieClip; 
    import flash.display.Shape; 
    import flash.display.Sprite; 
    import flash.events.*; 
    import flash.net.*; 
    import flash.ui.MouseCursor; 
    import flash.ui.Mouse; 

    public class images extends Sprite 
    { 
     var mouseIsDown:Boolean = false; 

     public function images() 
     { 
      stage.scaleMode=StageScaleMode.NO_SCALE; 
      stage.align=StageAlign.TOP_LEFT; 

      loadClickImage(0,0,"http://www.shapemakr.com/image/fotor/IMG_3294.JPG","http://adobe.com"); 
      loadClickImage(260,0,"http://www.shapemakr.com/image/fotor/IMG_3295.JPG","http://adobe.com"); 
      loadClickImage(520,0,"http://www.shapemakr.com/image/fotor/IMG_3296.JPG","http://adobe.com"); 
      loadClickImage(0,197,"http://www.shapemakr.com/image/fotor/IMG_3297.JPG","http://adobe.com"); 
      loadClickImage(260,197,"http://www.shapemakr.com/image/fotor/IMG_3298.JPG","http://adobe.com"); 
      loadClickImage(520,197,"http://www.shapemakr.com/image/fotor/IMG_3299.JPG","http://adobe.com"); 
      loadClickImage(0,394,"http://www.shapemakr.com/image/fotor/IMG_3300.JPG","http://adobe.com"); 
      loadClickImage(260,394,"http://www.shapemakr.com/image/fotor/IMG_3301.JPG","http://adobe.com"); 
      loadClickImage(520,394,"http://www.shapemakr.com/image/fotor/IMG_3302.JPG","http://adobe.com"); 
      loadClickImage(0,591,"http://www.shapemakr.com/image/fotor/IMG_3303.JPG","http://adobe.com"); 
      loadClickImage(260,591,"http://www.shapemakr.com/image/fotor/IMG_3304.JPG","http://adobe.com"); 
      loadClickImage(520,591,"http://www.shapemakr.com/image/fotor/IMG_3305.JPG","http://adobe.com"); 
      loadClickImage(0,788,"http://www.shapemakr.com/image/fotor/IMG_3306.JPG","http://adobe.com"); 
     } 

     function loadClickImage(x:int,y:int,imgurl:String,gotourl:String):void 
     { 
      loadClickScaleImage(x,y,1,1,imgurl,gotourl); 
     } 

     function loadClickScaleImage(x:int,y:int,scx:Number,scy:Number,imgurl:String,gotourl:String):void 
     { 
      //to load an image, you can use the `Loader` class: 
      var loader:Loader = new Loader(); 
      loader.x = x; loader.y=y; loader.scaleX=scx; loader.scaleY=scy; loader.name = gotourl; 
      //loader.mask = rect; 
      loader.load(new URLRequest(imgurl)); 
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete); 

      addChild(loader); 

      //to listen for a click: 
      loader.addEventListener(MouseEvent.CLICK, myClickHandler); 
      loader.addEventListener(MouseEvent.MOUSE_OVER, changeCursor); 
      loader.addEventListener(MouseEvent.MOUSE_OUT, resetCursor); 
     } 


     function myClickHandler(e:Event):void { 
      navigateToURL(new URLRequest(e.target.name), "_self");//do something, the image was clicked 
      //Mouse.cursor = MouseCursor. 
     } 

     private function changeCursor(e:Event) 
     { 
      (e.target as Loader).alpha=.85; 
      Mouse.cursor = MouseCursor.BUTTON; 
     } 

     private function resetCursor(e:Event) 
     { 
      (e.target as Loader).alpha=1; 
      Mouse.cursor = MouseCursor.ARROW; 
     } 

     function loaderComplete(e:Event):void { 
      // now your image is fully loaded 
     // trace(e.target.content.width); 
     } 

    } 
} 
+0

Хорошо, еще погуглить нужен я вижу. –

+0

Если вы делаете '' 'Embed (source =" E: /Documents/Shapemakr/ebayPics/July29_TreeImagesForFBbuilding/IMG_3294.JPG ")] private var contentIconClass: Class;' '' вы должны иметь возможность использовать его так: ' '' addChild (новый contentIconClass()) '' '. Использование метаданных '' 'Embed''' приведет к созданию [BitmapAsset] (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/BitmapAsset.html), который расширяет растровое изображение, поэтому вы можете просто добавить его в свой список отображения –

ответ

0

2 Проблемы я вижу:

  1. вы не инстанцирован вашу форму. Если у вас есть опыт работы с C#/Java, этот процесс должен быть хорошо знаком.

  2. Вы рисуете фигуру, но ее нет на экране, так что вы ничего не видите. В Flash вам нужно явно добавить вещи на экран. Так, чтобы это работало, вам просто нужно сделать:

    public function images() 
    { 
        sp = new Shape(); //instantiate a new shape 
        addChild(sp); //add it to the display so it can be seen 
    
        drawIcon(); 
    } 
    

Все остальное вы сделали хорошо выглядит. Хотя имейте в виду, что это не будет масштабировать ваш растровый рисунок таким образом.

Вы, вероятно, будет лучше forgoe форму, и просто работать с Bitmap непосредственно:

public function images() 
    { 
     addChild(contentIcon); //add it to the display so it can be seen 
     contentIcon.width = 200; //or whatever you want the width to be 
     contentIcon.scaleY = contentIcon.scaleX; //make the aspect ratio match 
     //to load an image, you can use the `Loader` class: 
     var loader:Loader = new Loader(); 
     loader.load(new URLRequest("http://someplace.com/myImage.jpg")); 
     addChild(loader); 

     //it's good practice though to listen for COMPLETE, IO ERROR, and SECURITY error events on the loader in case something goes wrong. 

     //to listen for a click: 
     loader.addEventListener(MouseEvent.CLICK, myClickHandler); 
    } 

    function myClickHandler(e:Event):void { 
     //do something, the image was clicked 
    } 
-1

, насколько я знаю, вы должны поместить этот образ в мувиклип, чтобы иметь возможность добавить его на сцену через AddChild.

в данный момент у вас есть в «Библиотеке», но не вызывается на сцену.

+0

Это не вопрос FlashPro. – BadFeelingAboutThis

+0

отлично, люблю, когда я делаю это .... мой плохой – TravisF

 Смежные вопросы

  • Нет связанных вопросов^_^