Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как передать картинку из PHP в Flash. (http://www.flasher.ru/forum/showthread.php?t=166485)

zaero33 03.09.2011 12:50

Как передать картинку из PHP в Flash.
 
Вложений: 1
Добрый день, уважаемые знатоки флеша.

Мне необходимо передать картинку из php в flash. Но проблема в том, что картинка не "физическая" (файл) а в виде переменной. В связи с этим 2 вопроса:

1. Нагуглил что картинку можно подтягивать с сервера после загрузки swf:
Вот тут звучал совет, что действовать нужно так же как с физической картинкой.
Пытался воспроизвести вот так:

PHP файл из которого должна подгружаться картинка (img.php):
PHP код:

<?php
// Create a blank image and add some text
$im imagecreatetruecolor(12020);
$text_color imagecolorallocate($im2331491);
imagestring($im155,  'A Simple Text String'$text_color);

// Set the content type header - in this case image/jpeg
header('Content-type: image/jpeg');

// Output the image
imagejpeg($im);

// Free up memory
imagedestroy($im);
?>

Код флешки, призванный подтягивать картинку:
Код AS3:

package  {
 
        import flash.display.MovieClip;
        import flash.display.Loader;
        import flash.net.URLRequest;
        import flash.events.ProgressEvent;
 
        public class f1 extends MovieClip {
 
                var myLoader:Loader = new Loader();
                var fileRequest:URLRequest = new URLRequest("img.php");
 
                public function f1() {
                        // constructor code
                        doit();
                }
 
                public function doit() {                       
                        myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressStatus);
                        myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderReady);
                        myLoader.load(fileRequest);
                }               
 
                public function onProgressStatus(e:ProgressEvent) { 
                      // this is where progress will be monitored   
                      trace(e.bytesLoaded, e.bytesTotal);
                }
 
                public function onLoaderReady(e:Event) {   
                      // the image is now loaded, so let's add it to the display tree!   
                      addChild(myLoader);
                }
        }               
}

При старте флешки в лог выводятся вот такие печальные строки:
E:\temp\F1\img.php - 0 bytes after decompression
и загрузки картинки не происходит.

Если поменять "img.php" на картинку ("333.jpg"), то картинка подгружается как надо. Подскажите пожалуйста, в чем тут проблема?

Проект для курочения:
Вложение 27000

2. Вот тут нашел способ передачи параметров в флешку до ее загрузки. Возможно ли так же передать картинку в флешку до ее загрузки, а не подтягивать с сервера после, как в пункте 1?

Заранее благодарен за ответы.

-De- 03.09.2011 13:03

В браузере по адресу img.php - видите картинку?

zaero33 03.09.2011 13:19

Ага, большое спасибо за наводку. Не работало потому что лежало локально а не на хосте.
Закинул все это на хост и заработало.
Остается вопрос №2: Возможно ли передать картинку в флешку до ее загрузки (как при передаче параметров через FlashVars ), а не подтягивать с сервера после, как в пункте 1?

-De- 03.09.2011 15:47

Можно, но изврат по-моему. Кодируешь картинку в base64, передаешь во флэшку как переменную во flashvars (но там может быть неприятное ограничение на размер) или флэшка дёргает жабаскрипт функцию, которая отдает ей картинку. Во флэшке декодируем из base64 в ByteArray, пихаем в Loader при помощи loadBytes - получаем что надо.
PS: делал локализирующийся втроенный прелоадер - таким не страдал, просто грузил картинку.

zaero33 03.09.2011 17:24

Ага, т.е. загрузка через Loader по методу 1 - это наиболее простой и нересурсожористый способ - верно?

pomuс 10.10.2012 04:31

ребята, использовал сокращеный код выше, но моя капча с PHP не грузится...
в html загрузка этой картинки выглядит так .
PHP код:

<img src="CaptchaSecurityImages.php?width=100&amp;height=40&amp;characters=5" alt="captcha" />
<
input id="security_code" name="security_code" type="text" /> 

Вот код в АС3
Код AS3:

var myLoader:Loader = new Loader();
                var fileRequest:URLRequest = new URLRequest("CaptchaSecurityImages.php");
 
                function doit() {                       
 
                        myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderReady);
                        myLoader.load(fileRequest);
                }
                doit();
 
                function onLoaderReady(e:Event) {   
 
                      addChild(myLoader);
                }

что же не так?

oleg_tomenko 10.10.2012 04:37

php-скрипты надо подгружать URLLoaderом. А то, что он вернет, уже будет ссылка на картинку, как я понял. Ее нужно грузить уже обычным Лоадером.






_____________________________________________

Помогаю новичкам разбираться с флэшом и Апи Вконтакте. http://vk.com/club37753830

pomuс 10.10.2012 18:29

не очень понял если честно... то есть подгрузил пхп, а из него еще взть вытянуть картинку? там в ПХП нету таких переменных отдельно на картнку
PHP код:

<?php 
session_start
();

if( isset(
$_POST['submit'])) {
   if( 
$_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
        
// Insert you code for processing the form here, e.g emailing the submission, entering it into a database. 
        
echo 'Thank you. Your message said "'.$_POST['message'].'"';
        unset(
$_SESSION['security_code']);
   } else {
        
// Insert your code for showing an error message here
        
echo 'Sorry, you have provided an invalid security code';
   }
} else {
?>

    <form action="form.php" method="post">
        <label for="name">Name: </label><input type="text" name="name" id="name" /><br />
        <label for="email">Email: </label><input type="text" name="email" id="email" /><br />
        <label for="message">Message: </label><textarea rows="5" cols="30" name="message" id="message"></textarea><br />
        <img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /><br />
        <label for="security_code">Security Code: </label><input id="security_code" name="security_code" type="text" /><br />
        <input type="submit" name="submit" value="Submit" />
    </form>

<?php
    
}
?>

я в ПХП делетант, понадобилось только для капчи ервый раз за все время...

alatar 10.10.2012 21:21

Цитата:

Сообщение от pomuс (Сообщение 1099281)
что же не так?

Код AS3:

var fileRequest:URLRequest = new URLRequest("CaptchaSecurityImages.php?width=100&amp;height=40&amp;characters=5");

Добавлено через 4 минуты
oleg_tomenko, скажите, вы действительно считаете, что при запросе к серверу вы "подгружаете php-скрипты"? (если не брать во внимание случаи крайней криворукости того, кто ставил сервер, когда действительно можно скачать сам скрипт, а не результат его работы).

pomuс 10.10.2012 22:30

Цитата:

Сообщение от alatar (Сообщение 1099373)
Код AS3:

var fileRequest:URLRequest = new URLRequest("CaptchaSecurityImages.php?width=100&amp;height=40&amp;characters=5");

Добавлено через 4 минуты

еёёёё маё! спасибо спаситель )) как всегда ответ на поверхности, а я уже голову ломаю какой день.!!


Часовой пояс GMT +4, время: 12:44.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.