水玉スライドショウ
wonderfl向けに写真の差し替えをしたほうがいいかも。
/**
* Copyright umhr ( http://wonderfl.net/user/umhr )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/hY6Z
*/
/*
wonderfl向けに写真の差し替えをしたほうがいいかも。
*/
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.StageScaleMode;
import flash.events.MouseEvent;
import flash.filters.DropShadowFilter;
import flash.net.*;
public class Main extends Sprite{
private var loadFiles_array:Array;
private var credit_array:Array = new Array();
private var url_array:Array = new Array();
private var count_array:Array = new Array();
private var scale_array:Array = new Array();
private var newFormat:TextFormat = new TextFormat();
private var count:uint;
private var photoby:TextField = MakeUI.newTextField([630,0,300,18,"",0], [["selectable", false],["filters",[new DropShadowFilter(0,0,0xFFFFFF,1,4,4,4)]]]);
private var myStageWidth:int;
private var myStageHeight:int;
private var Dammy:DammyClass = new DammyClass();
private var photobyURL:String;
private var fullScreen:TextField = MakeUI.newTextField([,,100,18, "FullScreen",0xFFFFFF], [["selectable", false],["visible",false]]);
private var fullScreenCount:int;
private var MultiLoader:MultiLoaderClass;
private var baseURL:String = "";
private var dataxmlURL:String = "swf/main/data.xml";
public function Main(){
if(isMztmjp()){
MultiLoader = new MultiLoaderClass();
baseURL = "http://www.mztm.jp/wp/";
}else{
baseURL = "http://mztm.jp/wonderfl/";
MultiLoader = new MultiLoaderClass("http://mztm.jp/crossdomain.xml");
dataxmlURL = "swf/main/data2.xml";
}
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = "TL";
loadFiles_array = MultiLoader.setLoad([baseURL+dataxmlURL], onXMLComp);
}
private function isMztmjp():Boolean{
var _str:String = stage.loaderInfo.url;
return (_str.substr(0,5) == "file:" || _str.indexOf("mztm.jp") > -1);
}
private function onXMLComp(e:Array):void{
var jpg_array:Array = new Array();
var data_xml:XML = XML(loadFiles_array[0].data);
var m:int = int(Math.random() * data_xml.items.length());
var shuffle_array:Array = Utill.shuffle(data_xml.items[m].item.length() - 1);
for (var i:int = 0; i < shuffle_array.length; i++) {
var n:int = shuffle_array[i]+1;
if(data_xml.items[m].item[n].jpg != ""){
jpg_array.push(String(baseURL+data_xml.items[m].item[n].jpg));
credit_array.push(String(data_xml.items[m].item[n].credit));
url_array.push(String(data_xml.items[m].item[n].url));
}
}
jpg_array.push(baseURL+String(data_xml.items[m].item[0].jpg));
credit_array.push(String(data_xml.items[m].item[0].credit));
url_array.push(String(data_xml.items[m].item[0].url));
loadFiles_array = new Array();
loadFiles_array = MultiLoader.setLoad(jpg_array,onImgComp);
}
private function onImgComp(e:Array):void{
addEventListener(Event.ENTER_FRAME, ENTER_FRAME);
var _length:int = loadFiles_array.length;
for (var i:int = 0; i < _length; i++) {
Dammy.setBitmap(loadFiles_array[i], i);
if(loadFiles_array[i].contentLoaderInfo.contentType.substr(0,5) == "image"){
var bmp_data:BitmapData = new BitmapData(loadFiles_array[i].width, loadFiles_array[i].height);
bmp_data.draw(loadFiles_array[i]);
loadFiles_array[i].unload();
loadFiles_array[i] = new Bitmap( bmp_data, "auto", true);
}
count_array[i] = 0;
loadFiles_array[i].alpha = 0;
//loadFiles_array[i].rotation = i * 5;
addChild(loadFiles_array[i]);
}
addChild(photoby);
photoby.text = credit_array[0];
photobyURL = url_array[0];
photoby.setTextFormat(MakeUI.newTextFormat(newFormat, {align:"right" } ));
photoby.addEventListener(MouseEvent.CLICK, onClickLink);
resizeHandler();
stage.addEventListener(Event.RESIZE, resizeHandler);
fullScreen.setTextFormat(MakeUI.newTextFormat(newFormat, { align:"right" } ));
fullScreen.addEventListener(MouseEvent.CLICK, onClick);
stage.addEventListener(MouseEvent.MOUSE_MOVE,onMouse_over);
addChild(fullScreen);
}
private function onMouse_over(e:MouseEvent = null):void{
fullScreen.visible = true;
fullScreenCount = 0;
}
private function onClickLink(e:MouseEvent = null):void{
navigateToURL(new URLRequest(photobyURL));
}
private function onClick(e:MouseEvent = null):void{
if(stage.displayState == "normal"){
stage.displayState = "fullScreen";
}else{
stage.displayState = "normal";
}
}
private function ENTER_FRAME(e:Event = null):void{
count ++;
if(fullScreenCount < 100){
fullScreenCount++;
}else if(fullScreenCount == 100){
fullScreenCount++;
fullScreen.visible = false;
}
var _length:int = count_array.length;
var n:int = int(count/300)%_length;
var i:int;
var cnt:Number = (count % 300 + 1) / 300;
for (i = 0; i < _length; i++) {
Dammy._array[i].visible = false;
}
if(cnt == 1 && n == _length-1){
for (i = 0; i < _length; i++) {
count_array[i] = 0;
}
Dammy.begin();
}else{
if(n < _length-1 && cnt > 0.9){
count_array[n + 1] += 1 / 330;
Dammy._array[n + 1].visible = true;
}
count_array[n] += 1 / 330;
Dammy._array[n].visible = true;
}
if(cnt < 2/300){
photoby.text = credit_array[n];
photoby.setTextFormat(MakeUI.newTextFormat(newFormat, {align:"right" } ));
photobyURL = url_array[n];
}
for (i = 0; i < _length; i++) {
slideSaver(i,count_array[i]);
}
Dammy.run(loadFiles_array);
}
private function slideSaver(num:int,per:Number):void{
if (per > 1) { per = 1 };
var poz:int = Dammy._array[num].random;
var _scale:Number;
if(poz > 50){
_scale = 0.9 + per / 10;
}else {
_scale = 1 - per / 10;
}
if (poz%7 == 0) {
Dammy._array[num].x = (myStageWidth - loadFiles_array[num].width) / 2;
Dammy._array[num].y = (myStageHeight - loadFiles_array[num].height) / 2;
}else if (poz%7 == 1) {
Dammy._array[num].x = myStageWidth - loadFiles_array[num].width+2;
Dammy._array[num].y = 0;
}else if (poz%7 == 2) {
Dammy._array[num].x = myStageWidth - loadFiles_array[num].width+2;
Dammy._array[num].y = myStageHeight - loadFiles_array[num].height+2;
}else if (poz%7 == 3) {
Dammy._array[num].x = 0;
Dammy._array[num].y = myStageHeight - loadFiles_array[num].height+2;
}else if (poz%7 == 4) {
Dammy._array[num].x = 0;
Dammy._array[num].y = 0;
}else if (poz%7 == 5) {
Dammy._array[num].x = 0;
Dammy._array[num].y = (myStageHeight - loadFiles_array[num].height) / 2;
}else if (poz%7 == 6) {
Dammy._array[num].x = myStageWidth - loadFiles_array[num].width + 2;
Dammy._array[num].y = (myStageHeight - loadFiles_array[num].height) / 2;
}
Dammy._array[num].scaleX = Dammy._array[num].scaleY = scale_array[num] * _scale;
var _alpha:Number = Math.min(1,per*10);
Dammy._array[num].alpha = _alpha;
if (num > 0 && (0.8 < _alpha && _alpha < 1)) {
Dammy._array[num - 1].visible = true;
}
}
private function resizeHandler(event:Event = null):void{
myStageWidth = stage.stageWidth;
myStageHeight = stage.stageHeight;
fullScreen.x = myStageWidth - 106;
photoby.y = myStageHeight - 18;
photoby.x = myStageWidth - 306;
var _length:int = loadFiles_array.length;
for (var i:int = 0; i < _length; i++) {
scale_array[i] = (Math.max(myStageWidth / Dammy._array[i].originalWidth, myStageHeight / Dammy._array[i].originalHeight)) * 1.15;
}
}
}
}
//originalWidth
class Utill extends Sprite {
public static function shuffle(_n:int):Array {
var _array:Array = new Array();
for (var i:int= 0; i<_n; i++){
_array[i] = Math.random();
}
return _array.sort(Array.RETURNINDEXEDARRAY);
}
}
import flash.display.DisplayObject;
import flash.display.Loader;
class DammyClass extends Sprite{
public var _array:Array = new Array();
private var old_array:Array = new Array();
public var _obj:Object = new Object();
//public var bmp_obj:Object = new Object();
private var item_array:Array = new Array();
public function setBitmap(arg:*,_id:*):void{
var typeof_id:String = typeof _id;
if(typeof_id == "number"){
_array[_id] = getObject(arg);
old_array[_id] = getObject(arg);
item_array[_id] = arg;
random();
}else if(typeof_id == "string"){
_obj[_id] = getObject(arg);
}
}
public function begin():void {
//Dammy._array[i].scaleX = Dammy._array[i].scaleY = 1;
for (var i:int = 0; i < _array.length; i++) {
_array[i].scaleX = _array[i].scaleY = 1;
_array[i].x = _array[i].y = 0;
_array[i].alpha = 0;
_array[i].visible = false;
//_array[i].width = 936;
//_array[i].height = 320;
}
random();
}
public function random():void {
for (var i:int = 0; i < _array.length-1; i++) {
_array[i]["random"] = int(Math.random() * 100);
}
_array[_array.length - 1]["random"] = 0;
}
public function run(_ar:Array):void {
for (var i:int = 0; i < _ar.length; i++) {
if (_array[i].alpha != old_array[i].alpha) {
_ar[i].alpha = old_array[i].alpha = _array[i].alpha;
}
if (_array[i].scaleX != old_array[i].scaleX) {
_ar[i].scaleX = old_array[i].scaleX = _array[i].scaleX;
}
if (_array[i].scaleY != old_array[i].scaleY) {
_ar[i].scaleY = old_array[i].scaleY = _array[i].scaleY;
}
//if (_array[i].width != old_array[i].width) {
//_ar[i].width = old_array[i].width = _array[i].width;
//}
//if (_array[i].height != old_array[i].height) {
//_ar[i].height = old_array[i].height = _array[i].height;
//}
if (_array[i].visible != old_array[i].visible) {
_ar[i].visible = old_array[i].visible = _array[i].visible;
}
if (_array[i].x != old_array[i].x) {
_ar[i].x = old_array[i].x = _array[i].x;
}
if (_array[i].y != old_array[i].y) {
_ar[i].y = old_array[i].y = _array[i].y;
}
}
}
private function getObject(arg:*):Object{
var __obj:Object = new Object();
__obj["alpha"] = arg.alpha;
__obj["originalWidth"] = arg.width;
__obj["originalHeight"] = arg.height;
//__obj["scaleX"] = arg.scaleX;
//__obj["scaleY"] = arg.scaleY;
__obj["visible"] = arg.visible;
__obj["x"] = arg.x;
__obj["y"] = arg.y;
return __obj;
}
//var contentType:String = arg.contentLoaderInfo.contentType;
//contentType == "image/jpeg"
}
import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.text.TextFormat;
import flash.display.Sprite;
import flash.display.Shape;
import flash.display.BitmapData;
import flash.display.Bitmap;
class MakeUI{
public static var defaultTextFormat:TextFormat = new TextFormat();
public static function newShape(x_y_w_h_sh:Array = null,property:Array=null,graphics:Array=null):Shape{
var i:int;
var sh:Shape;
if(x_y_w_h_sh && x_y_w_h_sh[4]){
sh = x_y_w_h_sh[4];
}else{
sh = new Shape();
}
if(x_y_w_h_sh){
if (x_y_w_h_sh[0]) { sh.x = x_y_w_h_sh[0] };
if (x_y_w_h_sh[1]) { sh.y = x_y_w_h_sh[1] };
}
if(property){
for (i = 0; i < property.length; i++) {
if(property[i] && property[i].length > 1){
sh[property[i][0]] = property[i][1];
}
}
}
if(graphics){
for (i = 0; i < graphics.length; i++) {
if(graphics[i] && graphics[i].length > 1){
sh.graphics[graphics[i][0]].apply(null, graphics[i][1]);
}
}
}
if(x_y_w_h_sh){
if (x_y_w_h_sh[2]) { sh.width = x_y_w_h_sh[2] };
if (x_y_w_h_sh[3]) { sh.height = x_y_w_h_sh[3] };
}
return sh;
}
public static function newSprite(x_y_w_h_sp:Array = null,property:Array=null,graphics:Array=null,addChild:DisplayObject = null):Sprite{
var i:int;
var sp:Sprite;
if(x_y_w_h_sp && x_y_w_h_sp[4]){
sp = x_y_w_h_sp[4];
}else{
sp = new Sprite();
}
if(x_y_w_h_sp){
if (x_y_w_h_sp[0]) { sp.x = x_y_w_h_sp[0] };
if (x_y_w_h_sp[1]) { sp.y = x_y_w_h_sp[1] };
}
if(property){
for (i = 0; i < property.length; i++) {
if(property[i] && property[i].length > 1){
sp[property[i][0]] = property[i][1];
}
}
}
if(graphics){
for (i = 0; i < graphics.length; i++) {
if(graphics[i] && graphics[i].length > 1){
sp.graphics[graphics[i][0]].apply(null, graphics[i][1]);
}
}
}
if(addChild){
sp.addChild(addChild);
}
if(x_y_w_h_sp){
if (x_y_w_h_sp[2]) { sp.width = x_y_w_h_sp[2] };
if (x_y_w_h_sp[3]) { sp.height = x_y_w_h_sp[3] };
}
return sp;
}
public static function newTextField(x_y_w_h_txt_color_alpha:Array = null,property:Array=null,method:Array=null):TextField{
var i:int;
var ta:TextField = new TextField();
ta.defaultTextFormat = defaultTextFormat;
if(x_y_w_h_txt_color_alpha){
if (x_y_w_h_txt_color_alpha[0]) { ta.x = x_y_w_h_txt_color_alpha[0] };
if (x_y_w_h_txt_color_alpha[1]) { ta.y = x_y_w_h_txt_color_alpha[1] };
if (x_y_w_h_txt_color_alpha[2]) { ta.width = x_y_w_h_txt_color_alpha[2] };
if (x_y_w_h_txt_color_alpha[3]) { ta.height = x_y_w_h_txt_color_alpha[3] };
if (x_y_w_h_txt_color_alpha[4]) { ta.text = x_y_w_h_txt_color_alpha[4] };
if (x_y_w_h_txt_color_alpha[5]) { ta.textColor = x_y_w_h_txt_color_alpha[5] };
if (x_y_w_h_txt_color_alpha[6]) { ta.alpha = x_y_w_h_txt_color_alpha[6] };
}
if(property){
for (i = 0; i < property.length; i++) {
if(property[i] && property[i].length > 1){
ta[property[i][0]] = property[i][1];
}
}
}
if(method){
for (i = 0; i < method.length; i++) {
if(method[i] && method[i].length > 1){
ta[i].apply(null, method[i][1]);
}
}
}
return ta;
}
public static function newTextFormat(_tf:TextFormat = null,property:Object = null):TextFormat{
var tf:TextFormat;
if(_tf){
tf = _tf;
}else{
tf = new TextFormat();
}
if(property){
for (var str:String in property) {
tf[str] = property[str];
}
}
return tf;
}
//以下はテスト
public static function pozObject(x:Number=NaN,y:Number=NaN,width:Number=NaN,hight:Number=NaN,obj:Object = null):Object{
if(x){obj.x = x}
if(y){obj.y = y}
return obj;
}
public static function newBitmap(x:Number=NaN,y:Number=NaN,width:Number=NaN,hight:Number=NaN,bd:BitmapData = null):Bitmap{
var b:Bitmap = new Bitmap(bd);
if(x){b.x = x}
if(y){b.y = y}
return b;
}
}
import flash.display.Sprite;
class MultiLoaderClass extends Sprite{
import flash.system.Security;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.display.Loader;
//import flash.display.LoaderInfo;
private var onComplete:Function = function(arg:Array=null):void{};
//private var onOpen:Function = function():void{};
private var loadNum:int;
private var loadCompNum:int;
private var error_array:Array = new Array();
private var URLs_array:Array = new Array();
private var _uniqueParam:String = "";
public function set uniqueParam(uStr:String):void {
if (uStr) {
if (uStr.substr(0,2) == "?=") {
_uniqueParam = uStr;
}else {
_uniqueParam = "?=" + uStr;
}
}else {
_uniqueParam = "";
}
}
public function get uniqueParam():String {
return _uniqueParam;
}
public function MultiLoaderClass(_str:String = null,uStr:String = null){
if(_str){
Security.loadPolicyFile(_str);
}
uniqueParam = uStr;
}
public function setLoad(__item_array:Array = null, _onComp:Function = null):Array {
loadCompNum = loadNum = 0;
if(_onComp != null){
onComplete = _onComp;
}
if (__item_array.length == 0) {
loadNum ++;
onComplete();
}
URLs_array = __item_array.concat();
error_array = new Array();
//onOpen = _onOpen;
var _array:Array = new Array();
var _length:int = __item_array.length;
for (var i:int = 0; i < _length; i++) {
error_array[i] = false;
if (__item_array[i] == null) { continue };
var _extension:String = __item_array[i].substr(-4,4).toLowerCase();//拡張子を取り出す。
if (_extension == ".xml" || _extension == "html") {
loadNum ++;
_array[i] = textFromURL(__item_array[i] + uniqueParam);
}else if(_extension == ".jpg" || _extension == ".gif" || _extension == ".png" || _extension == ".swf"){
loadNum ++;
_array[i] = imgFromURL(__item_array[i] + uniqueParam);
}else if(_extension == ".bin"){
loadNum ++;
__item_array[i] = __item_array[i].substr(0, __item_array[i].length - 4);
_array[i] = binaryFromURL(__item_array[i] + uniqueParam);
}else{
//_array[i] = null;
}
}
return _array;
}
private function binaryFromURL(__url:String):URLLoader{
var _loader:URLLoader = new URLLoader();
_loader.dataFormat = URLLoaderDataFormat.BINARY;
_loader.addEventListener(Event.COMPLETE,completeHandler);
_loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
_loader.load(new URLRequest(__url));
return _loader;
}
private function textFromURL(__url:String):URLLoader{
var _loader:URLLoader = new URLLoader();
_loader.addEventListener(Event.COMPLETE,completeHandler);
_loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
//_loader.addEventListener(Event.OPEN,openHandler);
_loader.load(new URLRequest(__url));
return _loader;
}
private function imgFromURL(__url:String):Loader{
var _loader:Loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
//_loader.contentLoaderInfo.addEventListener(Event.OPEN,openHandler);
_loader.load(new URLRequest(__url));
return _loader;
}
private function completeHandler(event:Event = null):void {
loadCompNum ++;
if(loadCompNum == loadNum){
onComplete(error_array);
}
}
/*
private function openHandler (event:Event):void {
if(Math.random()>0.95){
trace ("読み込みを開始した");
//event.currentTarget.contentLoaderInfo.close();
var str:String = event.currentTarget.toString().substr(8);
if(str == "LoaderInfo]"){
//event.currentTarget.contentLoaderInfo.close();
//event.target.contentLoaderInfo.close();
//event.currentTarget.close();
//event.target.close();
}else if(str == "URLLoader]"){
event.currentTarget.close();
completeHandler();
}
//completeHandler();
//onOpen();
}
}
*/
private function ioErrorHandler(event:IOErrorEvent):void {
//event.text = "Error #2035: URL が見つかりません。 URL: file:///~~~~~";
//event.text = "Error #2036: 読み込みが未完了です。 URL: http://~~~~~";
//から、URLのみを取り出す。
//trace(String(event.text).substr(String(event.text).indexOf(" URL: ")+6),"*****");
for (var i:int = 0; i < URLs_array.length; i++) {
var _str:String = String(event.text).substr(String(event.text).indexOf(" URL: ")+6).substr(-URLs_array[i].length);
if(URLs_array[i] == _str){
error_array[i] = true;
}
}
completeHandler();
}
}