写了一个Flash的Transition

本文介绍了一个名为MarsFly的Flash过渡动画类,通过贝塞尔曲线实现元素位置、缩放及透明度的变化。该动画支持自定义起始点、控制点等参数。

写了一个Flash的Transition

 package
{
import flash.display.*;
import flash.geom.*;
import fl.transitions.*;
import fl.transitions.easing.*;
import fl.motion.BezierSegment;
 
 
public class MarsFly extends Transition
{
 private var _origin_x:Number;
 private var _origin_y:Number;
 private var _origin_zoom:Number;
 private var _origin_alpha:Number;
 private var _start_x:Number = 0;
 private var _start_y:Number = 0;
 private var _control_x:Number = 0;
 private var _control_y:Number = 0;
 private var _start_zoom:Number = 2.5;
 private var _start_alpha:Number = 0;
 private var _bezier:BezierSegment;
 
    /**
     * @private
     */
 override public function get type():Class
 {
  return MarsFly;
 }
 
 
 
    /**
     * @private
  * @param transParams - 参数zoom,alpha,x 起始点x,y 起始点y,cx 控制点x,cy 控制点y
     */
 function MarsFly (content:MovieClip, transParams:Object, manager:TransitionManager)
 {
  super(content, transParams, manager);
  _origin_x = this.manager.contentAppearance.x;
  _origin_y = this.manager.contentAppearance.y;
  _origin_zoom = this.manager.contentAppearance.scaleX;
  _origin_alpha = this.manager.contentAppearance.alpha;
  _start_x = (transParams.x)?transParams.x:0;
  _start_y = (transParams.y)?transParams.y:0;
  _start_zoom = (transParams.zoom)?transParams.zoom:2.5;
  _start_alpha = (transParams.alpha)?transParams.alpha:0;
  _control_x = transParams.cx;
  _control_y = transParams.cy;
 
  _bezier = new BezierSegment(new Point(_start_x, _start_y),
         new Point(_start_x, _start_y),
         new Point(_control_x, _control_y),
         new Point(_origin_x, _origin_y)
         );
 }
 
    /**
     * @private
     */    
 override protected function _render(p:Number):void
 {
  var point:Point = this._bezier.getValue(p);
  this._content.x = point.x;//this._start_x + (this._origin_x - this._start_x) * (Math.sin(p*Math.PI/2));
  this._content.y = point.y;//this._start_y + (this._origin_y - this._start_y) * (Math.cos((1-p)*Math.PI/2));
  this._content.alpha = this._start_alpha + (this._origin_alpha - this._start_alpha) *p;
  this._content.scaleX = this._content.scaleY = this._start_zoom + (this._origin_zoom - this._start_zoom) *p;
 }
 
}
 
 
 
}

调用时

import fl.transitions.*;
import fl.transitions.easing.*;
 
btn1.addEventListener(MouseEvent.CLICK, function (event){
TransitionManager.start(img1_mc, {type:MarsFly, direction:Transition.OUT, duration:2, easing:Strong.easeOut, x:300,y:300, cx:300, cy: 0,zoom:5,alpha:0.1});               
              });
 
btn2.addEventListener(MouseEvent.CLICK, function (event){
TransitionManager.start(img1_mc, {type:MarsFly, direction:Transition.IN, duration:2, easing:Strong.easeOut,x:300,y:300, cx:300, cy: 0,zoom:0.1,alpha:0});                           });

 

### FPGA 实现 NAND Flash操作方法 #### 设计流程概述 实现基于FPGA的NAND Flash功能涉及到多个方面的工作,包括但不限于选择适合项目需求的SD NAND Flash芯片、构建稳定的电路连接以及深刻理解SPI协议机制。为了达成高效而可靠的读性能,在开发过程中需精心规划并不断优化设计方案[^1]。 #### SPI 协议解析 针对采用SPI接口通信方式的NAND Flash设备而言,其交互遵循特定的数据传输规则——即串行外设接口标准。此协议定义了一套完整的命令集用于控制存储器件的各种行为模式,比如擦除区块(Erase Block)、页面编程(Page Program)及连续数据读取(Continuous Read Data)[^1]。 #### 关键指令说明 - **读状态命令**:允许主机查询目标闪存单元当前所处的操作阶段或是遇到的问题指示符;这对于确保每次访问都能顺利完成至关重要。当执行任何可能改变介质内部状态的动作之后(如入或擦除),应当调用该函数验证结果是否成功[^3]。 ```c // C-like pseudocode to demonstrate how a read status command might be implemented. uint8_t nand_read_status(void){ uint8_t status; // Send the READ STATUS command and receive response into 'status' variable spi_transfer(NAND_CMD_READ_STATUS, &status); return status; } ``` #### FPGA代码片段展示 下面给出一段简化版VHDL源码作为例子,展示了怎样利用有限状态机(FSM)模型去管理与外部相连NAND Flash之间的信息交换过程: ```vhdl library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity fsm_nand_controller is Port ( clk : in STD_LOGIC; -- Clock signal rst : in STD_LOGIC; -- Reset signal cmd : in STD_LOGIC_VECTOR (7 downto 0); -- Command input from CPU or other controller data_out : out STD_LOGIC_VECTOR (7 downto 0); -- Data output to/from NAND flash busy : buffer STD_LOGIC := '0'; -- Busy flag indicating ongoing operation ... end fsm_nand_controller; architecture Behavioral of fsm_nand_controller is type state_type is (IDLE, CMD_SEND, ADDR_SEND, DATA_XFER, CHECK_STATUS); signal current_state,next_state:state_type:= IDLE; begin process(clk,rst) begin if rst='1' then current_state<=IDLE; elsif rising_edge(clk)then current_state<=next_state; end if; end process; -- State transition logic here... case current_state is when IDLE => busy<='0'; ... when CMD_SEND=> data_out<= cmd; ... when others=>null; end case; end architecture Behavioral; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值